在乐观的工作流程中,我想在后端获取数据之前触发成功操作:
像这样的东西
@Effect()
save$ = this.actions$
.ofType(myActions.SAVE)
.map((action: myActions.SaveAction) => action.payload)
.// dispatch success here ?
.switchMap((foo) => {
return this.myService
.updateFoo(foo)
.catch(error => Observable.of(new myActions.SaveFailAction(error)));
});
.do(new myActions.SomeSuccessAction)
或者,如果您要使用管道运算符(使用 RXJS 5.5+(,则do
将重命名为 tap
。
只是出于好奇...你为什么要做这样的事情?
与其触发额外的动作,不如myActions.SaveActionWithEarlySuccessAction
(而不是myAction.SaveAction(,然后这个效果和其他任何对那个特定效果做出反应的东西,不是更好吗?
由于SAVE
已经同步,因此不需要SaveSuccess
操作。你可以为SaveSuccess
做任何你想做的事情,Save
,否则保持你所拥有的。
switchMap(foo => this.myService.updateFoo(foo).pipe(
map(() => new MyActions.NullAction()),
catchError(error => of(new MyActions.SaveFailAction(error)),
));
您仍然必须在成功时返回操作以防止无限循环,但它不需要执行任何操作。