在 NGRX 8 和 Angular 中定期调度操作

Dispatch action periodically in NGRX 8 and Angular

我在 NGRX 文档中找不到类似的功能。但我也没有那个图书馆的丰富经验。

但是 - 是否有可能定期调度操作(以及将 GET 请求发送到后端的效果)?

例如,如果第一个调度操作得到空响应 - 5 分钟后重新调度操作。

NgRx Effects 是执行此操作的正确位置:

@Effect()
ping = interval(1000).pipe(mapTo(new Ping()));

有关详细信息,请参阅:https://timdeschryver.dev/posts/start-using-ngrx-effects-for-this

当需要存储区间参数时,可以使用:

    ping$ = createEffect(
        () =>
            this.actions$.pipe(ofType(startPinging)).pipe(
                withLatestFrom(this.store.pipe(select(pingPeriodAsMs))),
                exhaustMap(([_, pingPeriodAsMs]) => timer(pingPeriodAsMs, pingPeriodAsMs)),
                mapTo(ping())
            ),
        { dispatch: true }
    );

操作

  • startPinging: 请求开始循环
  • ping: 发生循环迭代,ping!

减速机

  • pingPeriodAsMs:数字,两次ping之间的时间量(在给出的代码示例中,该值也用于第一次ping的延迟)。

RxJS

职能 运营商