Angular 我在ngFor中调度操作,但效果得到上次调度的结果

Angular 我在ngFor中调度操作,但效果得到上次调度的结果,angular,store,ngrx-effects,Angular,Store,Ngrx Effects,我循环查看卡组件,它循环了12次,所以分派操作发生了12次,我在console.log内部生效以检查操作是否分派。我发现这种效果是有效的,但从存储中获取数据需要时间,而另一个操作会覆盖此操作。 如何禁用覆盖上一个操作 @Effect() getOrg: Observable<Action> = this.actions.ofType(usersActions.GET_ORGANIZATION_DATA) .map((action: usersActions

我循环查看卡组件,它循环了12次,所以分派操作发生了12次,我在console.log内部生效以检查操作是否分派。我发现这种效果是有效的,但从存储中获取数据需要时间,而另一个操作会覆盖此操作。 如何禁用覆盖上一个操作

    @Effect()
  getOrg: Observable<Action>
    = this.actions.ofType(usersActions.GET_ORGANIZATION_DATA)
    .map((action: usersActions.GetOrganizationData) => { console.log('effect');
     return action.payload.uid; })
    .switchMap((uid) => this.usersService.getOrgByKey(uid)
      .map((Orgs: Organization) => new usersActions.GetOrganizationDataSuccess({uid: uid, org: Orgs}))
    )
    .catch(err => Observable.of(new usersActions.UsersError(err)));
@Effect()
可观察
=this.actions.ofType(usersActions.GET\u ORGANIZATION\u DATA)
.map((操作:usersActions.GetOrganizationData)=>{console.log('effect');
return action.payload.uid;})
.switchMap((uid)=>this.usersService.getOrgByKey(uid)
.map((Orgs:Organization)=>newusersactions.getOrganizationDataSucces({uid:uid,org:Orgs}))
)
.catch(err=>Observable.of(newusersactions.UsersError(err));

您可以使用mergeMap而不是switchMap

根据rxjs:

switchMap与其他展平操作符之间的主要区别 是抵消效应。在每次发射时,前一个内部 可观察的(您提供的函数的结果)被取消,并且 新的可观测数据已订阅。你可以通过短语记住这一点 切换到一个新的可观察对象


您可以使用mergeMap而不是switchMap

根据rxjs:

switchMap与其他展平操作符之间的主要区别 是抵消效应。在每次发射时,前一个内部 可观察的(您提供的函数的结果)被取消,并且 新的可观测数据已订阅。你可以通过短语记住这一点 切换到一个新的可观察对象


我使用了它,但当特定组件中的用户分派操作重定向到分派所有操作且其中一个已存在时,我发现了问题。我使用了它,但当特定组件中的用户分派操作重定向到分派所有操作且其中一个已存在时,我发现了问题