首页 > 解决方案 > 事件队列和微任务队列之间有什么关系吗?

问题描述

我的理解

有人向我描述过,对于异步操作,一旦它们“加载”,它们的返回值就会进入事件队列。

还向我描述了Promises & .thens 是异步操作,它们的返回值堆积在 micro-task|PromiseJobs 队列中。

如果我们将 'front-of-the-queue' 定义为第一个异步操作 'loaded' 的结果的目的地......

我知道在事件队列或微任务队列的前面加载到它之前,调用堆栈/宏任务队列必须是空的。


我的问题

事件队列和微任务队列之间有什么关系吗?


不相关的代码片段

const f = () => {
  console.log('1')
  new Promise((resolve, reject) =>
    resolve(2)
  ).then(resolve => console.log(resolve))
}

f()

counter = 0;

for (let index = 0; index < 1000000000; index++) {
    counter = index;
}
console.log(3);

标签: javascript

解决方案


microtask队列或job队列是在 ES6 中随着 Promise 的引入而引入的。

没有任何这种关系,但有区别,事件队列将任务放在队列的后面,在所有其他任务之后,而微任务队列将它放在前面,并在当前函数之后立即执行任务调用堆栈被执行。

microtask队列 >队列的总体优先级event(对Node jsFrontend Javascript都有效)。

更多解释在这里


推荐阅读