请详细说下这段代码运行过程

Promise.resolve().then(()=>{
     console.log("promise1")
     setTimeout(()=>{
         console.log("setTimeout2")
     }, 0)

})
setTimeout(()=>{
    console.log("setTimeout1")

    Promise.resolve().then(()=>{
        console.log("promise2")
    })
    
}, 0)

题目描述

题目来源及自己的思路

相关代码

// 请把代码文本粘贴到下方(请勿用图片代替代码)

你期待的结果是什么?实际看到的错误信息又是什么?

阅读 2k
4 个回答

参考 https://github.com/chenyinkai...

同一次事件循环中,微任务永远在宏任务之前执行。

一进来,遇到 then,微任务,放到事件队列中,再到setTimeout,宏任务,放到事件队列,

第二轮循环同理。

promise构造函数是同步执行的, then方法是异步执行的

首先确定一点是, setTimeoutpromise,最先执行的是promise,最后执行定时器
从代码上来言,promise对象本身属于同步,只不过then方法属于异步而已。
setTimeout由宏任务进行处理,then方法由微任务进行处理,当微任务执行完毕之后,才会去执行宏任务。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题