Материал Angular 6 - дождитесь закрытия Mat Matog - PullRequest
0 голосов
/ 13 ноября 2018

У меня есть список действий, которые нужно выполнить, если задано логическое значение 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
  }
 }
}

1 Ответ

0 голосов
/ 13 ноября 2018

Вы можете просто превратить Наблюдаемое afterClosed в обещание и ждать результата. Пример:

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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...