我正在尝试运行以下代码(从this link修改):
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);
});
基本上,我正在尝试实现包罗万象的行为,即,如果任何一个诺言失败,请捕获并停止处理。但是无法实现。我想念什么?
答案 0 :(得分:0)
.then()
将回调作为参数,然后您将返回的Promise交给了它。
改为使用.then(prom)
。
答案 1 :(得分:0)
使用Promise.all
return Promise.all([
prom(),
prom()
])
.then(([fullfilled1, fulfilled2]) => {
console.log('all done: ' + fulfilled1 + ' ' + fulfilled2);
})
.catch(err => {
console.log(error.message);
});
如果一个失败了,那么每个人都会失败。