问题描述
我有一个带有两个 http 调用的 rxjs 管道,我在 chrome 取消我的一个 http 请求时遇到了问题..
这里是 rxjs 管道和相应的 html:
来自组件:
userCtrl = new FormControl();
...
private initAutocomplete() {
const existingIds$: Observable<number[]> = this.contactService
.search()
.pipe(
map(contacts => contacts.map(c => Number(c.user.uid)))
);
this.userSearchResults$ = this.userCtrl
.valueChanges
.pipe(
startWith(''),filter((name: string) => name.length > 2),mergeMap((name: string) =>
this.contactService.autocomplete(this.buildSearchParams(name))
.pipe(
//Causes a canceled http request!!
withLatestFrom(existingIds$),map(([searchItems,existingIds]: [UserSearchItem[],number[]]) =>
searchItems.filter(
(value: UserSearchItem) => !existingIds.includes(value.id))
)
)
)
);
}
来自 html
<mat-autocomplete #auto="matAutocomplete">
<mat-option
*ngFor="let user of userSearchResults$ | async"
[value]="user.fullname"
(onSelectionChange)="handleSelect(user)"
>
{{ user.fullname }}
</mat-option>
</mat-autocomplete>
来自服务:
autocomplete(params: UserSearchParams): Observable<UserSearchItem[]> {
return this.http.post<UserSearchItem[]>(`${this.apiPrefix}/user/autocomplete`,params);
}
search(): Observable<Contact[]> {
return this.http.post<Contact[]>(`${this.apiPrefix}/bookmarks_user/search`,{});
}
谁能告诉我如何找出导致我的搜索请求被 chrome 取消的原因?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)