как вызвать http запрос сразу же после завершения - PullRequest
0 голосов
/ 18 сентября 2018

Этот HTTP-вызов является длинным опросом.Мое текущее решение:

interval(5000).subscribe(() => {
    if (!this.isLoading) {
        this.isLoading = true;
        this.httpService.getEvents()
          .pipe(finalize(() => this.isLoading = false))
          .subscribe((r) => {
          // do something
        });
      }
    });

Но я хочу уменьшить задержку, когда последний HTTP-вызов сделан.Как снова вызвать этот HTTP-запрос в финализ сразу?

1 Ответ

0 голосов
/ 18 сентября 2018

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

timer(0, 5000)
  .pipe(
    exhaustMap(() => this.httpService.getEvents()),
    take(1),
    repeat(),
  )
  .subscribe(console.log)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...