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)); // 22:
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。