首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >什么是之前在eventloop上工作的?微任务还是宏任务?

什么是之前在eventloop上工作的?微任务还是宏任务?
EN

Stack Overflow用户
提问于 2019-03-14 22:16:59
回答 1查看 68关注 0票数 1

我在调查事件循环。但我遇到了一个问题。之前在eventloop上运行的是什么?微任务还是宏任务?如果我运行以下代码

代码语言:javascript
复制
Promise.resolve().then(()=> console.log('Promise'));
setTimeOut(()=>console.log("setTimeout"),0);

console.log显示"Promise setTimeout";但根据答案,Difference between microtask and macrotask within an event loop context宏任务在微任务之前工作。

EN

回答 1

Stack Overflow用户

发布于 2019-03-14 22:42:47

Macrotasks在其他microtasks之前被处理,但在宏任务完成之后,所有调度的微任务都将运行。其推论是,如果已经调度了一些微任务,则两个宏任务不能相继运行。

您当前的JS循环运行(在其中运行PromisesetTimeout)实际上是一个MacrotaskPromise调度微任务,setTimeout调度宏任务。

当当前脚本结束时,Macrotask将结束,运行时将查看微任务队列。它解析Promise,如果从这次运行中没有调度其他微任务,它将运行下一个Macrotask。在您的示例中,这是setTimeout方法。

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

https://stackoverflow.com/questions/55164822

复制
相关文章

相似问题

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