首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >javascript中的微任务队列和回调队列

javascript中的微任务队列和回调队列
EN

Stack Overflow用户
提问于 2022-09-25 00:13:01
回答 1查看 78关注 0票数 0

javascript运行时环境有一个事件循环、回调队列和微任务队列。微任务队列中的函数优先于回调队列中的函数(用于推入调用堆栈)。

从web返回的函数,如fetch (它返回一个承诺),被推送到微任务队列,而从web返回的函数,当setTimeout被推到回调队列时。因此,fetch承诺返回的函数将在setTimeout之前执行。

我的怀疑是,控制台也是一个web,对吗?现在,如果我们只是想让控制台记录一些东西,那么console web将返回结果,从技术上讲,这个结果应该首先存储在回调队列中。

因此,在这里我们可以看到,一个简单的控制台日志的优先级应该低于fetch (因为返回的fetch函数存储在microtask队列中,而控制台存储在回调队列中)。

因此,理论上,从fetch返回的函数应该在一个简单的控制台日志之前执行,但实际上,结果是相反的。那我错过了什么?请有人澄清我的疑虑。

EN

回答 1

Stack Overflow用户

发布于 2022-09-25 00:32:17

看看这个片段

代码语言:javascript
复制
setTimeout(() => console.log('ASYNC'))
Promise.resolve().then(() => console.log('PROMISE')) // also microtask
queueMicrotask(() => console.log('MICROTASK'))
console.log('SYNC')

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

https://stackoverflow.com/questions/73841348

复制
相关文章

相似问题

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