以下代码用于对输入进行反跳操作,用户将在其中输入内容和地址,并在用户停止输入500毫秒后进行搜索:
let debounce = this.search_terms.pipe(
debounceTime(500),
distinctUntilChanged(),
map((term: string) => this.mapify_api.searchAddress(term))
);
debounce.subscribe(
(data:any) => {
console.log('request successful');
},
(data:any) => {
console.log('request unsuccessful');
}
);
它可以正常工作,直到我呼叫的端点返回400,这将导致控制台记录“请求失败”。此后,订阅将中断,并且不再听取输入的更改。为什么会这样?
答案 0 :(得分:0)
如果流中出现错误,则可观察项将完成。您将需要处理它并重复流以使其恢复。
let debounce = this.search_terms.pipe(
debounceTime(500),
distinctUntilChanged(),
map((term: string) => this.mapify_api.searchAddress(term)),
catchError(e=>of(e)),
first(),
repeat()
);