Вызывайте api каждые x секунд, не работайте с Ngrx + Angular - PullRequest
0 голосов
/ 04 ноября 2019

Я хочу обновить список, например, каждые 10 секунд. Я использовал оператор «таймер», но API не отображается во второй раз на Chrome -> вкладка «Сеть».

Мой процесс: диспетчеризация Действие загрузки - мой API-метод GET - вызывается только один раз на вкладке «Сеть». Но если я создал кнопку с функцией отправки этого действия, мой API будет вызываться много раз на вкладке «Сеть» / Chrome каждый раз, когда я нажимаю

Мой env: ngrx 7.4, rxjs 6.5.2, угловой 7Не знаю, автоматический ли сервер блокирует повторный вызов api или если angular и ngrx использует кеш

// Мой эффект

  load$: Observable<Action> = this.action$.pipe(
    ofType<Load>(NotificationActionTypes.load),
    switchMap(() => timer(0, 10000)),
    switchMap((action) => {
      return this.notiService.getNotifications().pipe(map((res: any) => {
        return new LoadSuccess({
          result: res,
        });
      }));
    })
  );```

[![enter image description here][1]][1]
See my image, 20/125 request, 125 continue increasing, 20/130, 20/145, but number 20 didn't increase


  [1]: https://i.stack.imgur.com/tKgbE.png

1 Ответ

1 голос
/ 04 ноября 2019

Вам не нужно отправлять действие, если вы хотите перезагружать каждые x секунд, вы можете просто использовать поток timer:

@Effect()
ping = interval(10000).pipe(
  switchMap((action) => {
    return this.notiService.getNotifications().pipe(map((res: any) => {
      return new LoadSuccess({
        result: res,
      });
    }));
}));

Больше информации на Начните использовать ngrx /эффекты для этого

...