![](/img/trans.png)
[英]Why does returning Promise.resolve() inside `then` cause two promise creation instead of one?
[英]Why does then return a new promise instead of returning promise returned by onFulfilled
我想知道为什么,如果then()的onFulfilled处理函数返回一个承诺p2,那么then()为什么返回一个新的承诺p3而不是仅仅返回p2?
例:
let p1 = new Promise(function(resolve, reject) {
resolve(42);
});
let p2 = new Promise(function(resolve, reject) {
resolve(43);
});
let p3 = p1.then(function(value) {
// first fulfillment handler
console.log(value); // 42
return p2;
});
p3.then(function(value) {
// second fulfillment handler
console.log(value); // 43
});
为什么p1.then()不只是返回p2而不是做出新的承诺p3? 它会有相同的结果。
因为then()
立即返回一个值,甚至在您的回调运行之前。
它可能无法知道您将要返回什么。
很简单,因为p3
创建和之前返回onFulfilled
回调将运行- then
回调总是异步的。 它尚不知道将来会返回什么价值,因此为它创造了希望。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.