调用(并捕获)多个承诺



我正在尝试运行以下代码(从该链接修改(:

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);
});

基本上,我试图实现一种包罗万象的行为,即如果任何一个承诺失败,则捕获并停止处理。然而无法实现。我错过了什么?

.then()将回调作为参数,并为其提供返回的Promise本身。

请改用.then(prom)

使用Promise.all

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

如果一个人失败了,每个人都会失败。

最新更新