const original = Promise.resolve(2)
new Promise(resolve => {
resolve(original)
Promise.resolve().then(() => Promise.resolve().then(() => console.log(1)))
console.log(4)
}).then(t => console.log(t))
console.log(3)
这样一段代码.
按照我的理解
因为 original 已经被 resolve,所以它的状态被 new Promise 继承
然后执行 Promise.resolve 并注册回调
然后打印 4
然后注册 new Promise 的回调
然后打印 3
然后执行第一个注册的回调,并注册第三个回调
然后打印 t,也就是 2
然后执行第三个回调,也就是 1
可是执行结果却是 4,3,1,2
想不通为什么,特来求教!
谢谢各位大牛~~~
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.