繁体   English   中英

为什么然后返回一个新的Promise而不是返回onFulfilled返回的Promise

[英]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.

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