为了账号安全,请及时绑定邮箱和手机立即绑定

新手上路,Promise.resolve的参数是thenable对象时万分感谢

新手上路,Promise.resolve的参数是thenable对象时万分感谢

慕码人2483693 2019-08-21 19:35:23
http://es6.ruanyifeng.com/#do...这个是阮一峰老师关于Promise.resolve()参数的解读,其中参数是thenable对象时,Promise.resolve方法会将这个对象转为Promise对象,然后就立即执行thenable对象的then方法。问题来了:newPromise(resolve=>{resolve(1);Promise.resolve({then:function(resolve,reject){console.log(2);resolve(3)}}).then(t=>console.log(t))console.log(4);}).then(t=>console.log(t));console.log(5);控制台输出:45213下面按照最开始的理解,将上述代码进行转换newPromise(resolve=>{resolve(1);newPromise(resolve=>{console.log(2);resolve(3)}).then((t)=>console.log(t));console.log(4);}).then(t=>console.log(t));console.log(5);控制台输出24531顺序不一样。。我很崩溃求解答
查看完整描述

2 回答

?
红颜莎娜

TA贡献1842条经验 获得超12个赞

newPromise()接收一个函数参数,这个函数是立即执行的,即同步。
Promise的then方法都是异步的
Promise.resolve()接收thenable参数,调用thenable的then方法也是异步的。
你可以去看下一些实现promise的库的源码,会更清晰。
                            
查看完整回答
反对 回复 2019-08-21
  • 2 回答
  • 0 关注
  • 845 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信