【问题标题】:Polling Effects Ngrx轮询效果 Ngrx
【发布时间】:2019-06-11 17:41:22
【问题描述】:

我是 Ngrx 的新手,在使用 Ngrx 效果设置轮询时遇到问题

我已经尝试过How to do http polling in ngrx effect 中提到的答案,但这似乎并没有按我的解决方案预期的那样工作。我有一种感觉,这可能是因为我的退货声明

 LoadProcessesByUser$: Observable<Action> = this.actions$.pipe(
   ofType(AppActions.LoadProcessesByUser),
   switchMap(() => {
     interval(100).pipe(
       startWith(0),
       mapTo(this.actions$)
     );
     return this.apiService.getUserProcesses(this.userService.user.lanId).pipe(
       map(result => new LoadProcessesSuccess(result)),
       catchError(error => of(new LoadFailure(error)))
     );
   })
 );

我希望看到此效果每 100 毫秒被调用一次,但看起来,它只在我调度 LoadProcessByUser() 时才被调用

请注意;我希望此轮询在应用程序的整个生命周期内一直运行。

谢谢

【问题讨论】:

    标签: angular ngrx polling ngrx-effects


    【解决方案1】:

    您没有对interval 执行任何操作,您必须返回间隔并在intervals pipe 中添加服务调用。

    如果你不需要LoadProcessesByUser,你也可以基于interval创建一个流,例如

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

    您可以在Start using ngrx/effects for this找到更多信息

    【讨论】:

    • 太棒了!欣赏洞察力。阅读链接,仍然是新的,不完全确定 Ping() 是如何适应的。
    • 你可以调用你的服务而不是Ping
    猜你喜欢
    • 1970-01-01
    • 2018-01-11
    • 2018-10-08
    • 2020-02-14
    • 1970-01-01
    • 2019-07-02
    • 2020-03-18
    • 2021-08-30
    • 1970-01-01
    相关资源
    最近更新 更多