加载一组无人机时,我调度了很多事件。我想为每个加载的无人机分派连接到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摊位不做(concat仅显示第一个值,切换最后一个)
switchMap仅执行他从先前退订的最后一个原因 concatMap将不会订阅另一个,因为第一个尚未完成...
有没有一个订阅所有人并分别观看他们的人?
答案 0 :(得分:0)
在控制台中没有出现任何错误吗?效果应该始终返回Action
(除非正在使用dispatch: false
)。
行
map(result => { console.log('there', action.payload.droneId);}),
不返回动作并导致效果被破坏。