js关于Promise问题
问题代码
let p1 = new Promise((resolve,reject)=>{
resolve();
});
let p2 = p1.then(()=>{
console.log("哈哈哈哈");
})
p2.then(()=>{
console.log(111111);
})
// 这里p1状态为 fulfilled
1. console.log(p1);
// 这里p2状态为 pending
1. console.log(p2);
// 而在定时器中
setTimeout(()=>{
// p1结果没有变化
console.log(p1);
// 而 p2的状态改为了 fulfilled
console.log(p2);
})
我想知道p2的一个执行过程,或者说是为什么
我不知道我理解的正不正确,我这里相的是, 因为Promise是异步的, 所以代码先执行了不在定时器当中的打印,也就是标注为1的位置,而p1呢是存在resolve的所以p1的状态为fulfilled,而p2呢所实在的我没有理解到,但是我猜测,因为p2 是p1.then的一个处理结果,而p1.then又返回了个新的promise ,这个新的promise 没有进行任何操作,所以这里p2 的状态为pending。
而这时呢,除了定时器中所有代码都已经执行完成,这回处理定时器中的p1的结果没有发生变化,而p2在上面代码中进行了.then操作,虽说在.then里面什么也没有操作,但是因为 默认then 返回promise状态是fulfied,
所以说在定时器中p2的结果发生了变化