Angular 6材质-等待直到“材质对话框”关闭

时间:2018-11-13 15:01:08

标签: angular asynchronous async-await angular-material angular6

我有一个要执行的操作列表,如果设置了布尔提示,则将显示一个对话框并根据其值执行一些操作。

这里的问题是for循环并行运行,并且所有操作都同时执行,但是我希望for循环同步运行,并且循环必须等待对话框关闭。有解决办法吗?

\1\t\2\t\3\t\4

1 个答案:

答案 0 :(得分:1)

您可以将afterClosed的Observable变为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
}