猿问

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

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
顺序不一样。。我很崩溃求解答
慕码人2483693
浏览 846回答 2
2回答

红颜莎娜

newPromise()接收一个函数参数,这个函数是立即执行的,即同步。Promise的then方法都是异步的Promise.resolve()接收thenable参数,调用thenable的then方法也是异步的。你可以去看下一些实现promise的库的源码,会更清晰。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答