我理解的是:下面的代码会先打印123456
,然后执行myfunc1
函数的计算步骤,最后等待执行完毕后打印my func1
。理论上主线程会先将myfunc1
加入到 Promise 队列中,然后直接执行console.log(123456)
,最后再逐步清空任务队列、即执行myfunc1
函数内 Promise 中的计算步骤。
而实际上是:先执行myfunc1
函数的计算步骤,执行完毕后打印123456
,最后再打印my func1
。
哪里没理解对呢?
function myfunc1(){
return new Promise((resolve,rejects)=>{
/*这一段是计算步骤开始*/
let i =1
for (let index = 1; index < 100000000; index++) {
i = 1
for (let index_j = 1; index_j < 100; index_j++) {
i *=index_j
}
}
/*这一段是计算步骤结束*/
resolve("my func1")
})
}
myfunc1()
.then(result=>{
console.log(result)
})
console.log(123456)
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.