在 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
职能
运营商
我在 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的延迟)。