1:
let p1 = new Promise((resolve, reject) => {
setTimeout(() => {
resolve(1);
}, 1000);
})
let p2 = p1.then(data => {
console.log(data); // 1
return new Promise((resolve, reject) => {
resolve(2);
})
})
p2.then(res => console.log(res)); // 2
2:
let p1 = new Promise((resolve, reject) => {
setTimeout(() => {
resolve(1);
}, 1000);
})
let p2 = p1.then(data => {
console.log(data); // 1
return new Promise((resolve, reject) => {
resolve(2);
}).then(res => console.log(res)) // 2
})
p2.then(res => console.log(res)); // undefined,对这里有疑问,为什么不是 2
为什么第 2 个代码中的 resolve(2)
无法传递给 p2.then
?
这里一共产生了 4 个 Promise(如图)
p2
是第 ❸ 个,它没有有效的返回值(相当于resolve(undefined)
),所以最后一句打印出来是undefined
如果改一下
也就是把那个
then
的中的 lambda 改为返回3
,最后就会输出3
。如果把3
改成res
,就会输出上一个 Promise 的结果,也就是2
。