我想知道为什么,如果then()的onFulfilled处理程序返回一个promise p2,那么then()如何返回一个新的promise 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?它会有相同的结果。
答案 0 :(得分:3)
因为then()
会立即返回值 ,所以在回调甚至运行之前。
它不可能知道你将要返回什么。
答案 1 :(得分:-1)
只是因为在p3
回调运行之前创建并返回了onFulfilled
- then
回调始终是异步的。它无法知道将来会返回什么价值,因此它为它创造了一个承诺。