我有一个要完成的操作列表,如果设置了 bool 值 promptRequired,我会显示一个对话框并根据它的值执行一些操作。
这里的问题是 for 循环并行运行并且所有操作同时执行,但我希望 for 循环同步运行并且循环必须等到对话框关闭。有解决办法吗?
async runActions() {
for (const action of Actions) {
if(action.promptRequired) {
const dialogRef = this.promptDialog.open(PromptDialogComponent, {
data: {action: action,
},
});
// await dialogRef.afterClosed();
}
}
const status = await this.httpService.getRequest('runAction', action)
// Do Some Action based on status
}
}
}
最佳答案
您只需转动 afterClosed
可观察到 promise 并等待结果。例子:
async runActions() {
for (const action of Actions) {
if(action.promptRequired) {
const dialogRef = this.promptDialog.open(PromptDialogComponent, {
data: {action: action },
});
await dialogRef.afterClosed().toPromise();
}
}
const status = await this.httpService.getRequest('runAction', action)
// Do Some Action based on status
}
关于Angular 6 Material - 等待 Mat Dialog 关闭,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53283838/