【发布时间】:2018-05-14 14:41:10
【问题描述】:
我是 Observables 的新手。我有以下效果。
我希望在调度 SunriseSunsetAction 之前调度 PositionUpdateAction 或 PositionFailedAction。
发生的情况是我将 getCurrentPosition() 的结果传递到结果变量中的最后一个映射中,并且调度了 SunriseSunsetAction。 PositionUpdateAction 或 PositionFailedAction 均未调度。
我假设我想以某种方式使用 concat。我一直在尝试各种事情但没有成功。
任何帮助将不胜感激。
@Effect()
position$: Observable<Action> = this.actions$.pipe(
ofType(ActionType.GetPosition),
mergeMap(() =>
fromPromise(this.geo.getCurrentPosition()).pipe(
map(value => new UiActions.PositionUpdateAction(value)),
catchError((err) => {
return of(new UiActions.PositionFailedAction(err));
})
).map(result =>
new UiActions.SunriseSunsetAction(this.sun.calculateSunriseSunsetWindows(result.payload.lat, result.payload.long))
)
)
);
【问题讨论】:
-
因此,如果失败,您希望同时查看
PositionFailedAction和SunriseSunsetAction? -
其实很好,如果它失败了,我不希望调度 SunriseSunsetAction
-
好的,我对答案中的运算符进行了重新排序,以便在创建第二个操作之后进行捕获。
标签: typescript observable ngrx ngrx-store ngrx-effects