【发布时间】:2020-07-30 06:00:47
【问题描述】:
这里是问题的简化版;
有一些承诺,很少有.then() 链,还有一个用于错误处理的.catch() 块;
每个承诺都可能解决或拒绝,因此我使用Promise.allSetted 根据数组中的顺序和状态来了解哪个承诺失败;当所有承诺都解决时它工作正常,但当一个承诺被拒绝时,它的状态将在Promise.allSetteld 中显示为“已完成”;如果我删除 .catch() 块,它将按预期工作,但我们需要保留 .catch() 块以登录到商店;那么为什么它的行为不符合预期呢?有什么方法可以让它在.catch() 块中显示“拒绝”状态?
let a = Promise.resolve("a: Promise.resolved").then(response => response).catch(err=>console.log(err));
let b = Promise.reject("b: Promise.rejected").then(response => response); // no error handling
let e = Promise.reject("e: Promise.rejected").then(response => response).catch(err=>console.log(err));
Promise.allSettled([a,b,e]).then( values => console.log(values) );
【问题讨论】:
-
“那么为什么它的行为不像预期的那样?”好吧,如果你没有重新抛出它是“预期的”没有错误。
标签: javascript promise