首页 > 解决方案 > 如何防止 rxjs 管道运算符循环通过两个用户/系统定义的输入

问题描述

我将 Angular 与 Ngrx 一起使用。我目前有一个从商店加载数据的数据源,但如果找不到,将对后端进行服务调用以获取所需的数据。

我的问题是,每当我将新参数传递给 DataSource 中的 load 方法时,它都会循环遍历先前的值和新值(例如 1、2、1、2、1、2 ......)

到目前为止,使用 rxjstake(1)运算符,这会停止无限循环,但有时之前的数据是被映射的数据,而不是新的数据。

我曾尝试在线搜索如何/为什么会发生这种情况,但没有找到,或者我只是使用了错误的关键字。

这就是我上面提到的加载方法

 load(departmentId: number) {
    this.store.pipe(
      take(50),
      select(selectDepartmentSignatories(departmentId)),
      tap((signatories: SignatoryListItem[]) => {
        if (!!signatories && signatories.length > 0) {
          //map signatory details
        } else {
          this.store.dispatch(DepartmentSignatoriesRequested({ payload: { departmentId } }));
        }
      })
    ).subscribe();
  }

编辑:在 else 语句中添加了动作调度

标签: angularrxjs

解决方案


您应该分派加载操作,并且逻辑应该生效。轻敲你的逻辑并不是他们做事的方式。


推荐阅读