Вызов (и отлов) нескольких обещаний - PullRequest
0 голосов
/ 22 ноября 2018

Я пытаюсь запустить приведенный ниже код (изменено с эта ссылка ):

let cnt = 1;

var prom = () => new Promise(
    function (resolve, reject) {
        try {
            console.log('enter promise ' + cnt);
            if (Math.random() < 0.5) throw new Error('error in promise ' + cnt);
            resolve('done in promise ' + cnt);
        }
        catch (e) {
            reject(e);
        }
        finally{
            cnt++;
        }
    }
);

prom()
    .then(prom())
    .then(function (fulfilled) {
        console.log('all done: ' + fulfilled);
    })
    .catch(function (error) {
        console.log(error.message);
    });

В основном я пытаюсь добиться универсального поведения, т. Е. Если любое обещание не выполняется,поймать и остановить обработку.Однако не может достичь.Чего мне не хватает?

Ответы [ 2 ]

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

Используйте Promise.all

return Promise.all([
  prom(),
  prom()
])
.then(([fullfilled1, fulfilled2]) => {
  console.log('all done: ' + fulfilled1 + ' ' + fulfilled2);
})
.catch(err => {
  console.log(error.message);
});

Если один из них терпит неудачу, все терпят неудачу.

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

.then() принимает обратный вызов в качестве аргумента, и вы дали ему возвращенное обещание.

Используйте взамен .then(prom).

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