微任务与同步代码执行顺序

microtask vs synchronous code execution order

我想了解 javascript 异步代码在事件循环中的执行顺序。

这是我的非常短的代码片段。

我们如何解释实际的执行顺序:in promise -> end -> in then?为什么 promise 构造函数 运行 在 console.log('end') 之前?

const p = new Promise((res, rej) => {
  console.log('in promise')
  res()
})

p.then(() => console.log('in then'))

console.log('end')

在 promise 构造函数中 运行 的第一件事是“在 promise”中注销

运行s 的第二件事是 p.then,在将来设置一些代码到 运行。

运行 的事情是 console.log('end');

您的代码现已完成 运行ning,因此执行 returns 到事件循环。承诺处于已解决状态,因此微任务 运行 和 .then 回调注销 'in then'.