Выдает Promise.all ([]) блок catch, если в каждом обещании уже есть блок catch? - PullRequest
0 голосов
/ 02 ноября 2018

Я думал, что это приведет к ошибке в блоке Promise.all catch, но это никогда не заходит так далеко?

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

const apiCallOne = new Promise((resolve, reject) => (
  resolve('Resolved !!!')
)).then(console.log)
  .catch(console.warn);

const apiCallTwo = new Promise((resolve, reject) => (
  reject('Rejected !!!')
)).then(console.log)
  .catch(console.warn);

Promise.all([apiCallOne, apiCallTwo])
  .then(value => console.log('all', value))
  .catch(err => console.error('error', err));

Будет ли Promise.all когда-либо попадать в блок улова?

Ответы [ 2 ]

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

Вы можете обрабатывать их при вызове Promise.all, нет необходимости обрабатывать их перед выполнением запросов, потому что мы хотим запустить их параллельно и отменить все, если возникнет ошибка.

const apiCallOne = new Promise((resolve, reject) => (
  resolve('Resolved !!!')
))

const apiCallTwo = new Promise((resolve, reject) => (
  reject('Rejected !!!')
))

Promise.all([apiCallOne, apiCallTwo])
  .then(value => console.log('all', value))
  .catch(err => console.error('error', err));
0 голосов
/ 02 ноября 2018

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

const apiCallOne = new Promise((resolve, reject) => (
  resolve('Resolved !!!')
)).then(console.log)
  .catch((err) => {
    console.warn(err)
    throw err
  });

const apiCallTwo = new Promise((resolve, reject) => (
  reject('Rejected !!!')
)).then(console.log)
  .catch((err) => {
    console.warn(err)
    throw err
  });

Promise.all([apiCallOne, apiCallTwo])
  .then(value => console.log('all', value))
  .catch(err => console.error('error', err));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...