@ngrx 中的效果中的连锁动作

2023-11-21

我在发出 HTTP 请求的 Effect 中一个接一个地链接操作时遇到一些问题。

效果代码如下:

export class UserEffects {

    @Effect()
    update$: Observable<Action> = this.actions$.ofType(user.USERCHANGE).pipe(
        switchMap(data => this.authService.login(data['payload'])),
        map(userInfo => new UserChangedAction(userInfo)),
        tap(() => this.store.dispatch(
             new LoginStateChangeAction(localStorage.getItem('token')))
        )
    );

    constructor(private authService: AuthService, private actions$: Actions,
        public store: Store<fromRoot.State>) {}
}

问题是这两个操作同时被调用。 LoginStateChange 操作依赖于 UserChanged 操作来完成。

我怎样才能实现这个目标?

Thanks!


您可以返回多个操作,如 Austin 的帖子中所述:从 NGRX 效果分派多个操作

@Effect()
update$ = this.actions$.ofType(user.USERCHANGE).pipe(
  switchMap(data => this.authService.login(data['payload'])),
  switchMap(userInfo => [
    new UserChangedAction(userInfo),
    new LoginStateChangeAction(localStorage.getItem('token')),
  ])
);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

@ngrx 中的效果中的连锁动作 的相关文章