请老师帮忙解释下这里,谢谢

请老师帮忙解释下这里,谢谢

https://img1.sycdn.imooc.com//climg/62d7d53108f18d0d12280234.jpg


问题描述:

老师,请问,这个 .then()后返回的实例,展开后,这里的状态为什么都是 fulfilled?

调用resolve()  和 reject() 都是fulfilled,reject() 不应该是 rejected 状态吗?这里怎么理解呢?

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

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

1回答
好帮手慕久久 2022-07-20 18:27:49

同学你好,解答如下:

Promise对象调用then方法后,会返回一个新的Promise对象,注意,不是原来那个Promise实例:

https://img1.sycdn.imooc.com//climg/62d7d7d8098c9e6a07020193.jpg

由于then方法默认会返回一个成功状态的对象,所以打印结果中是fulfilled。

可以调整一下代码看看:

 const p=new Promise((resolve,reject)=>{
            reject("error")

        })

        console.log(p);
        p.then(()=>{},(error)=>{console.log(error);})

祝学习愉快!

  • 提问者 慕码人0290569 #1

    老师,是否可以理解为:上图老师标红的那句“p不是这个Promise对象”(它是Promise对象调用 then()后生成的新的Promise实例,由于 then()始终默认返回第一个参数,所以上图看到的状态都是fulfilled);

    而下图,分开写了,p是Promise实例调用 rejec()后,状态 pending->rejected

    2022-07-20 19:55:06
  • 好帮手慕久久 回复 提问者 慕码人0290569 #2

    理解是对的。

    2022-07-21 09:29:33
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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