首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >谁是javascript中宏任务和微任务之间的第一名?

谁是javascript中宏任务和微任务之间的第一名?
EN

Stack Overflow用户
提问于 2020-02-27 02:51:07
回答 2查看 1.5K关注 0票数 1

我搞不懂哪个任务是先由事件循环来完成的。

原因如下。

堆栈溢出来自 的答案

在这个宏任务完成后,所有可用的微任务都将被处理。

类似的例子来自 博客文章

代码语言:javascript
运行
复制
setTimeout(() => console.log('Macro task'), 0);
Promise.resolve().then(() => console.log('Micro task'));

所以,这让我很困惑。我现在所理解的就是这个。

  1. 非回调函数的代码将立即插入到调用堆栈中。
  2. setTimeout()的回调函数插入到宏任务队列中。
  3. Promise的回调函数插入到微任务队列中。
  4. 当调用堆栈为空时,事件循环从Micro队列接受任务并运行。
  5. 执行所有微任务后,事件循环从宏任务队列中获取任务并运行。

这个过程是我的理解,我是对的吗?

EN

回答 2

Stack Overflow用户

发布于 2020-02-27 04:09:16

由于,脚本本身被视为宏任务,因此在最后执行排队的微任务。

所以承诺是一个微任务,setTimeout回调是一个宏任务,但是脚本也是一个宏任务。

因此,脚本->承诺-> setTimeout

这里有更多详细信息:https://medium.com/javascript-in-plain-english/javascript-event-loop-y-promises-951ba6845899

票数 2
EN

Stack Overflow用户

发布于 2020-02-27 03:23:49

我认为,在脚本完成后,就会检查微任务队列。它是在检查宏任务队列之前。

有关详细信息,请参阅这里

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60425587

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档