Выполнение функции после завершения всех асинхронных функций? - PullRequest
0 голосов
/ 10 мая 2018
this.validate_label_population();
this.validate_title_prefix();
this.validate_title_suffix();
this.executeGitCommentCreation();

У меня есть следующие функции, выполняющиеся в конструкторе. Верхние 3/4 являются асинхронными функциями:

Пример:

  async validate_title_prefix() {
    console.log('validate_title_prefix not implemented');
  }

Я хочу выполнить this.executeGitCommentCreation(); последним после запуска всех предыдущих. Каков наилучший способ сделать это? Должен ли я бросить await перед топ-3 или использовать какой-нибудь Promise.all?

1 Ответ

0 голосов
/ 10 мая 2018

Вы можете использовать этот фрагмент:

Promise.all([
    this.validate_label_population(), 
    this.validate_title_prefix(), 
    this.validate_title_suffix()
])
.then(function(values) {
    this.executeGitCommentCreation();
}.bind(this));

или вы можете использовать функцию стрелки, чтобы получить правильный контекст:

Promise.all([
    this.validate_label_population(), 
    this.validate_title_prefix(), 
    this.validate_title_suffix()
])
.then(values => {
    this.executeGitCommentCreation();
});

или вы даже можете кэшировать это во внешний контекст:

var _this = this;
Promise.all([
    this.validate_label_population(), 
    this.validate_title_prefix(), 
    this.validate_title_suffix()
])
.then(function(values) {
    _this.executeGitCommentCreation();
});

Для получения дополнительной информации читайте Документы .

P / s: ваше соглашение об именах не унифицировано (смешано с падением верблюда и змеей) Я рекомендую использовать camelCase для переменных / функций, PascalCase для классов и ALL_CAPS для констант.

...