Обработка ожидающих отклонений Promise.all () без функции then () - PullRequest
0 голосов
/ 06 ноября 2019

Так что, согласно моему пониманию, Promise.all([promises]) возвращает массив разрешенных значений, если все обещания разрешены. Кроме того, согласно Promise.all() fail-fast behavior, если любое из обещаний отклонено, Promise.all() отклоняется.

const result = await Promise.all([...promises]);

Так, каково значение переменной result, если любое обещание отклонено? Возвращает ли массив с отклоненными значениями? Как я могу убедиться, что все обещания разрешены без использования then() обратного вызова? Я использую шаблон async-await по всему проекту и не хочу использовать обратные вызовы / обещания.

1 Ответ

0 голосов
/ 06 ноября 2019

Если какое-либо из обещаний в массиве выбрасывает, ваша переменная результата будет неопределенной, и вы попадете в блок catch.

(async () => {
  let result;
  try {
    const promise1 = Promise.resolve(1);
    const promise2 = Promise.resolve(2);
    const promise3 = Promise.reject();
    result = await Promise.all([promise1, promise2, promise3]);
  }
  catch(err) {
   console.log("a promise has thrown");
  }
  finally {
    console.log(result);
  }
})()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...