Повторять запрос API каждые x секунд - PullRequest
0 голосов
/ 04 октября 2019

В угловом я строю приложение чата. Я хочу получать новые сообщения каждые x секунд следующим образом: 1. 5 секунд 2. 10 секунд 3. 20 секунд - есть новые сообщения 4. 5 секунд 5. 10 секунд ... и т. Д.

Iустал от repeatWhen, но, похоже, нет необходимости повторять запрос, только выдает последнее значение завершенной наблюдаемой.

Вот что я получил:

this.delay = 5000;
this.ngxsStore.fetchMessages()
   .pipe(repeatWhen(completed => completed.pipe(delay(this.delay))})
   .subscribe(resp => this.messages = resp);
  fetchMessages(store) {
    return this.api.fetchMesages()
      .pipe(
        tap(resp => {
          if (resp) {
            store.patchState({
              messages: [
                ...store.getState().messages,
                ...resp
              ]
            });
          }
        })
      );
  }

Ответы [ 2 ]

0 голосов
/ 07 октября 2019

Техника называется «откат назад». Вы можете найти реализацию здесь: Экспоненциальная реализация отката с rxjs

0 голосов
/ 04 октября 2019

попробуйте добавить defer ()

defer(()=>this.ngxsStore.fetchMessages())
   .pipe(repeatWhen(completed => completed.pipe(delay(this.delay))})
   .subscribe(resp => this.messages = resp);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...