繁体   English   中英

Promise.all 应该被拒绝,但实际上实现了?

[英]Promise.all should be rejected, but is actually fulfilled?

我是 JavaScript 的新手,并认为我了解 Promises 的基础知识,但我肯定在这里遗漏了一些东西。

这里的基本想法是我将几个承诺链接在一起。

promise3做了一些初步的工作,如果它成功了,那么我们再做一些工作。 这条链的第二阶段是几个 promise, promise1promise2 因为promise2被拒绝,所以我预期的最终结果是Promise.all拒绝,因此我预计Promise.allSettled中的结果也会被拒绝。

但是,我观察到的是,这里链中的第一个 promise 决定了链的结果——如果解决了,那么结果就解决了,但是如果它被拒绝,那么结果就被拒绝了。

为什么会这样?

 const promise1 = Promise.resolve(1); const promise2 = Promise.reject(2) const promise3 = Promise.resolve(3); const promises = [promise1, promise2]; const p = [ promise3.then(Promise.all(promises)) ] Promise.allSettled(p). then((results) => results.forEach((result) => console.log(result.status)))

这是因为您的代码不正确。 then期望回调,但您提供的值是Promise.all(...)

更正的代码是

 const promise1 = Promise.resolve(1); const promise2 = Promise.reject(2) const promise3 = Promise.resolve(3); const promises = [promise1, promise2]; const p = [ promise3.then(() => Promise.all(promises)) ] Promise.allSettled(p). then((results) => results.forEach((result) => console.log(result.status)))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM