http请求成功后,我需要从ngrx效果中调度多个操作。
似乎有几种方法行得通,有些则行不通,我不明白它们之间的区别是什么。
@Effect()
loadUser = this.actions
.pipe(
ofType(campaignActions.type.LOAD_CAMPAIGN),
map((action: userActions.LoadUserAction) => action.payload),
switchMap((payload: { id: number }) =>
this.s.getUser(payload.id)
.pipe(
switchMap((data) => {
return from([
new userActions.LoadUserSuccessAction(),
new userActions.SomethingElseSuccessAction()
]);
}),
catchError(() => of(new userActions.LoadUserFailureAction()))
)
)
);
首先,我可以使用switchMap或mergeMap。我相信不同之处在于,如果多次触发此效果,那么如果我使用switchMap而不是我使用mergeMap,则任何正在进行的请求都将被取消。
在分派(dispatch)多个 Action 方面,以下所有工作:
以下内容不起作用:
前三个选项之间有什么区别? http请求后,mergeMap和switchMap怎么样?为什么最后一个选项不起作用?
最佳答案
这个问题可以分为几个部分:
+)mergeMap和switchMap之间的区别:
+)mergeMap和switchMap之间的相似性:它们都可以将任何类似于流的对象转换为可观察对象。
+)您的代码之间的区别: