参数为then方法的对象的疑惑

参数为then方法的对象的疑惑

相关代码:

const thenable={
    then(resolve,reject){
        console.log('then');
        resolve('resolve');
    }
}
const p=Promise.resolve(thenable).then(
    data=>console.log(data),
    err=>console.log(err)
)
console.log(p)//pending//then//resolve

为什么输出p的状态是pending?https://img1.sycdn.imooc.com//climg/6288f70d098c97d909160430.jpg

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

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

1回答
卡布琦诺 2022-05-22 10:54:46

同学你好,这里的Promise.resolve方法的作用是将thenable这个对象转为Promise对象,然后就立即执行thenable对象的then方法。所以这里需要将Promise.resolve方法中的data传递到thenable对象的then方法中,如下:

https://img1.sycdn.imooc.com//climg/6289a5e4092b0a8f07980401.jpg

祝学习愉快!

  • 提问者 慕粉1234567890123 #1

    就算将data传到thennable的then方法中,但是输出的p还是pending状态。

    我的意思是,既然前面已经立即执行了thenable对象的then方法,那么后面的p不是应该是fulfidded状态么,怎么是pending状态?

    2022-05-22 11:17:51
  • 卡布琦诺 回复 提问者 慕粉1234567890123 #2

    同学你好,首先状态是已经改变为fulfidded了(要展开浏览器console中的Promise)。外面显示pending可能跟渲染机制有关系。

    https://img1.sycdn.imooc.com//climg/6289ad810905707f19200632.jpg

    祝学习愉快!

    2022-05-22 11:33:24
问题已解决,确定采纳
还有疑问,暂不采纳

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

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

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

在线咨询

领取优惠

免费试听

领取大纲

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