loops - angular 和 ngrx :你能在循环中调度一个动作吗?
问题描述
我已经定义了一个效果,它调用一个 api 来删除服务器中具有特定 uuid 的文件:
@Effect()
deleteFileImport$: Observable<Action> = this.actions$.pipe(
ofType(actions.runs.DELETE_FILE_IMPORT),
map((action: any) => action.payload),
switchMap((fileImport: FileImport) =>
this.rest.del(fileImportUrl + fileImport.uuid + '/').pipe(
map((response: FileImport) => new actions.runs.DeleteFileImportSuccess(response)),
catchError((err: HttpErrorResponse) => {
console.log('DELETE_FILE_IMPORT error', err);
return observableOf(new NotificationAction({
title: 'File Import Delete Failed',
body: 'Failed to delete file import: ' + fileImport.filename
})
);
})
)
)
);
如果我在循环中调用此效果:
importFilesToDelete.forEach(file => {
this.store.dispatch(new actions.runs.DeleteFileImport(file));
});
只有第一个被删除。如果我跟踪调度调用,我可以看到所有文件都使用传递的正确参数进行处理,但只执行第一个操作。我在 ngrx 的工作方式上遗漏了什么吗?你可以循环调度动作吗?
解决方案
推荐阅读
- dafny - 使用后置条件修改 Dafny 中的数组
- java - Java/Processing mousePressed in loop 不工作
- html - Bootstrap - 如何在与 form-control-lg 高度相同的情况下实现更大高度的自定义选择?
- r - 如何在数据框/小标题中的字符串中小写第二个字母
- selenium - protractor/selenium 开始忽略 protractor.conf.js 中的 chrome 选项 (chromeOptions)
- python - 将刻度标签设置为常规重量
- python-3.x - 如何遍历 music21 和弦对象并将和弦的每个音符附加在一起,并将整个和弦作为一个元素存储到列表中?
- ansible - 如何使用变量的值来查找名称为所述值的另一个变量
- angular - 使用 Jasmine 在路由和 routerLink 中进行角单元测试
- intellij-idea - 如何删除 intellij @range 注释?