Javascript 那么,为什么要返回一个新的承诺,而不是返回OnCompleted返回的承诺
我想知道为什么,如果then()的oncompleted处理程序返回一个承诺p2,那么为什么then()会返回一个新的承诺p3,而不仅仅是返回p2 例如:Javascript 那么,为什么要返回一个新的承诺,而不是返回OnCompleted返回的承诺,javascript,promise,es6-promise,Javascript,Promise,Es6 Promise,我想知道为什么,如果then()的oncompleted处理程序返回一个承诺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(valu
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
是在oncompleted
回调运行之前创建并返回的-那么
回调总是异步的。它还不知道将来会返回什么价值,因此它为它创造了一个承诺