Angular 2 / RxJS-HTTP返回400时订阅中断

时间:2018-11-01 23:50:56

标签: angular rxjs

以下代码用于对输入进行反跳操作,用户将在其中输入内容和地址,并在用户停止输入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,这将导致控制台记录“请求失败”。此后,订阅将中断,并且不再听取输入的更改。为什么会这样?

1 个答案:

答案 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()
    );