angular - 当我分派多个时,我的效果只被调用一次
问题描述
当我加载一组无人机时,我会发送很多事件。我想为每架装载的无人机发送连接到 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的stand7t做(concat只显示第一个值,switch最后一个)
switchMap 只做最后一个原因,他取消订阅前一个 concatMap 不会订阅另一个原因,因为第一个没有完成......
有没有给大家订阅,一个一个单独看的?
解决方案
您在控制台中没有收到任何错误吗?一个 Effect 应该总是返回一个Action
(除非dispatch: false
被使用)。
线
map(result => { console.log('there', action.payload.droneId);}),
不返回动作并导致效果被破坏。
推荐阅读
- python - Python Selenium 查找包含特定文本的元素
- ios - 在公开发布之前提交 iPadOS 15 更新
- reactjs - npx 安全帽不会在我的“反应文件夹”中配置
- python - 除了 pd.concat 还有什么更有效的方法吗
- r - 如何为数据帧的每一行绘制直方图(第一列作为字符值)
- ssl-certificate - AWS API 网关 MissingAuthenticationToken
- ibm-mq - IBM MQ 确认超时查询
- jquery - groupname 在 Groupable & Searchable Dual Listbox Plugin - jQuery Transfer 中没有向右移动
- powershell - 将命令行粘贴到 VSCode 的集成终端中会过早执行其中的一部分
- linux - 为什么编译内核时不能得到相同的符号?