Захват отменен / отменен запрос на HttpInterceptor. Angular8 - PullRequest
0 голосов
/ 27 марта 2020

У меня проблема в приложении, построенном с Angular 8.

У меня есть счетчик уровня приложения, который включается для каждого http-запроса и отключается в ответах.

Эти запросы перехватываются HttpInterceptor, который показывает счетчик нагрузки, и когда ответ получен, он скрыт. Проблема возникает, когда некоторые из этих http-вызовов отменяются, как в этом примере:

  search(param: string) {
    return terms.debounceTime(SEARCH_DEBOUNCE)
      .distinctUntilChanged()
      .switchMap(term => this.search(param));
  }

Приведенный выше код относится к системе текстового поиска, где, когда вы прекращаете вводить данные в течение определенного периода времени, выполняется поиск. Когда это делается слишком быстро, несколько запросов могут быть сделаны одновременно, который switchMap затем отменяет. По этой причине, когда запросы отменяются, перехватчик не может получить статус этой отмены, и, следовательно, счетчик никогда не исчезает.

Перехватчик делает что-то вроде этого:

    intercept(request: HttpRequest<any>, next: HttpHandler): Observable<any> {
    // the spinner is shown

    return next.handle(request).pipe(
      catchError(error => {
        // error handling and spinner stop
      }),
      finalize(() => {
        // Access to all responses except cancelled requests, which have no response.
      })
    );

Поэтому для тех случаев, когда запрос отменен или прерван, я не могу остановить счетчик.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...