ожидание завершения функции перед возвратом обещания - PullRequest
0 голосов
/ 25 июня 2018
someFunction() {
  if (array.length > 0) {
    return new Promise((resolve, reject) => {
      array.map(item => {
        AXIOS.postItem(item).catch(err => {reject('error')});
      });
      resolve('resolve');
    });
  }
}

mainFunction() {
  Promise.all([this.someFunction()]).then(() => {
    this.invokeTheRest();
  )}
}

В моем случае функция some всегда возвращает resolve, даже до выполнения или перехвата AXIOS.postItem().

Как я могу ждать выполнения AXIOS.postItem()?И если в catch обнаружена ошибка, как я НЕ могу перейти к this.invokeTheRest()?

Ответы [ 2 ]

0 голосов
/ 25 июня 2018

Если someFunction вернет массив обещаний, я бы сказал, что это анти-шаблон кодирования.

Я бы хотел вернуть Promise.all из someFunction, после чего someFunction превратится в Promise,что вы можете использовать, как и любое другое обещание.

например.

someFunction() {
  return Promise.all(
    array.map(item => AXIOS.postItem(item)));
}

mainFunction() {
  this.someFunction().then(() => {
    this.invokeTheRest();
  });
}
0 голосов
/ 25 июня 2018

Измените тело someFunction на просто:

someFunction () {
    return array.map(item => AXIOS.postItem(item));
}

, чтобы он возвращал массив Promises, который можно использовать с Promise.all.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...