【发布时间】:2019-05-30 12:30:47
【问题描述】:
当我加载一组无人机时,我调度了很多事件。我想为每架装载的无人机发送连接到 SSE 服务,所以我执行以下操作
drones.forEach((drone) => {
console.log('dispatch', drone.id)
this.store$.dispatch(new UsedDronesStoreActions.OpenUsedDroneUpdatePositionChannelRequest({ droneId: drone.id, projectId : environment.projectId }));
});
我的效果
@Effect()
startStatusUpdate$ = this.actions$.pipe(
ofType<featureActions.OpenUsedDroneUpdateStatusChannelRequest>(featureActions.ActionTypes.OpenUsedDroneUpdateStatusChannelRequest),
concatMap((action) =>
this.droneDataService.openUsedDroneUpdateStatusChannel(action.payload).pipe(
map(result => { console.log('there', action.payload.droneId);}),
catchError((error: HttpErrorResponse) => { }),
)
)
);
只调用一次
dispatch id1
dispatch id2
dispatch id3
there id1
===> no more
我尝试了concatMap,switchMap 展位don7t 做(concat 只显示第一个值,切换最后一个)
switchMap 只做最后一个原因,他退订了上一个 concatMap 不会订阅另一个,因为第一个未完成...
有没有一个订阅大家,一个一个单独看的?
【问题讨论】:
-
我认为 mergeMap 可以提供帮助。关于mergeMap - learnrxjs.io/operators/transformation/mergemap.html
标签: angular observable ngrx ngrx-effects