Angular 2 / RxJS - прекращается подписка, когда http возвращает 400 - PullRequest
0 голосов
/ 02 ноября 2018

Следующий код предназначен для аннулирования ввода, когда пользователь вводит и адрес, и он будет искать после того, как пользователь перестанет набирать 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 голосов
/ 02 ноября 2018

Наблюдение завершится, если в потоке возникнет ошибка. Вам нужно будет обработать его и повторить поток, чтобы он возобновился.

  let debounce = this.search_terms.pipe(
        debounceTime(500),
        distinctUntilChanged(),
        map((term: string) => this.mapify_api.searchAddress(term)),
        catchError(e=>of(e)),
        first(),
        repeat()
    );
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...