为了账号安全,请及时绑定邮箱和手机立即绑定

如何切换(开始/停止)ngrx 操作?

如何切换(开始/停止)ngrx 操作?

潇湘沐 2022-07-15 10:12:47
下面是一个将加载操作分派到商店的操作。相应的效果将处理请求并发送回响应项。但我想要的是我想用一个按钮来切换下面的动作。因此,如果我按开始,它将每 1 秒开始调度一次动作,如果我按暂停,它将暂停调度,如果我按开始,它将从它离开的地方继续,并重复......我怎样才能切换这样的动作?    let date = 1587513626000; // date is required because the backend only sends data with a start and end date    interval(1000).pipe(tap(_ => {      this.store.dispatch(loadStoreItems({ limit: 10, start: date, end: date + 1000 }))      date += 1000    }))      .subscribe()我尝试了一堆运算符,其中一些正在部分工作(例如有时使用 takeWhile/takeUntil 我能够暂停)但无法重新启动。
查看完整描述

1 回答

?
慕田峪7331174

TA贡献1828条经验 获得超13个赞

要在效果中进行切换,您需要 2 个操作(开始和停止)并使用takeUntil.


//effects.ts


  loadCourierItems$ = createEffect(() =>

    this.actions$.pipe(

      ofType(actions.start),

      exhaustMap(action => interval(1000).pipe(

        // logic for every second activity.

        map(actions.everySecondAction()),

      )),

      takeUntil(this.actions$.pipe(ofType(actions.stop))),

      repeat(),

    )

  )

//app.component.ts


  constructor(private store: Store<CourierItemsState>) {

  }


  ngOnInit() {

    this.store.dispatch(startAction());

  }


  ngOnDestroy() {

    this.store.dispatch(stopAction());

  }


查看完整回答
反对 回复 2022-07-15
  • 1 回答
  • 0 关注
  • 93 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信