redux - 在 Effect 中执行另一个动作后调度一个动作
问题描述
我的代码中有以下功能
private loadDrones() {
this.store$.dispatch(new UsedDronesStoreActions.GetUsedDronesRequest({organizations_id : environment.organizationId}));
this.store$.pipe(select(UsedDronesStoreSelectors.selectAll)).subscribe((drones) => {
drones.forEach((drone) => {
if (this.drones.has(drone.id)) { return; }
this.drones.set(drone.id, drone);
this.store$.dispatch(new UsedDronesStoreActions.OpenUsedDroneUpdatePositionChannelRequest({ droneId: drone.id, projectId : environment.projectId }));
this.store$.dispatch(new UsedDronesStoreActions.OpenUsedDroneUpdateStatusChannelRequest({ droneId: drone.id, projectId : environment.projectId }));
});
});
}
我想将此功能移动到我的效果中的 INIT 操作中。
使用
@Effect()
init$ = this.actions$.pipe(
ofType(ROOT_EFFECTS_INIT),
map(action => ...)
);
我的问题是,实际函数加载一个列表,然后感谢该列表的结果,为列表的每个元素调度一系列动作。
是否有可能在单一效果中实现这一点?还是我必须将其分成 2 个不同的动作?
解决方案
https://medium.com/@amcdnl/dispatching-multiple-actions-from-ngrx-effects-c1447ceb6b22
@Effect() save = this.update$.pipe(
map(action => action.payload),
switchMap(payload => this.myService.save(payload)),
switchMap(res => [
new Notification('save success'),
new SaveSuccess(res)
])
);
推荐阅读
- swift - Swift didSet for var 使用 @Binding 在子级中更改
- c++ - 未找到 SDL_Mixer dll
- angular - Elasticsearch 部分搜索词 | 角
- javascript - HTML Hamburger - 如何形成正确的 X
- java - 如何组织 Java 9 模块的常见依赖项?
- node.js - HTML FormData 文件未发布到 REST API
- json - jq - 如何有条件地过滤掉对象
- javascript - JavaScript 前端框架如何处理路由?
- python - 检查目标时出错:预期 dense_3 有 2 个维度,但得到了形状为 (5, 200, 200, 1) 的数组
- c++ - “relocation truncated to fit: R_X86_64_PC32 against symbol `__imp_Sleep'”的问题