感觉很奇怪,p调用then返回的新的p的默认状态是pending,但是新的p再调用then,默认却是执行fulfilled状态对应的回调函数呢?

感觉很奇怪,p调用then返回的新的p的默认状态是pending,但是新的p再调用then,默认却是执行fulfilled状态对应的回调函数呢?

//then方法执行之后,返回一个新的Promise对象
    const p1 = new Promise((resolve,reject)=>{
        resolve();
    });
    const p2 = p1.then(()=>{},()=>{}).then().then();
    console.log(p1);    //Promise {<fulfilled>}
    console.log(p2);    //Promise {<pending>}
    const p = new Promise((resolve,reject)=>{
        resolve();
    });
    p.then(
        ()=>{console.log('success');},
        ()=>{console.log('err');}
    ).then(
        ()=>{console.log('success2');},
        ()=>{console.log('err2');}
    );
    //success
    //success2


正在回答 回答被采纳积分+1

登陆购买课程后可参与讨论,去登陆

1回答
好帮手慕久久 2023-08-09 11:05:02

同学你好,控制台的打印问题。promise对象调用then方法后,默认返回成功状态。p2的打印状态,控制台的显示具有迷惑性。将结果展开,会看到最终的状态是fulfilled:

https://img1.sycdn.imooc.com//climg/64d3024a09c5729306330235.jpg

祝学习愉快!

  • 提问者 Canaan_000 #1

    好的 谢谢啦

    2023-08-09 11:07:33
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师