宏任务与微任务的本质区别是什么?

发布于 2022-09-12 13:07:50 字数 69 浏览 5 评论 0

宏任务与微任务的本质区别是什么?是否可以理解为浏览器在达到调用条件时自动调用的是宏任务,自己编写代码触发调用的回调属于微任务

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

放飞的风筝 2022-09-19 13:07:50

本质就是单一层级的任务队列不够用,于是引入微任务队列来体现任务的优先级。

你可以理解成飞机检票登机,本来的规则是简单的排队,先到先登机。加入微任务就好像加入头等舱先检票的规则。头等舱队伍里只要有人,工作人员就先安排头等舱的登机,头等舱队伍里没人了,再转而处理经济舱的队列。每处理一个经济舱乘客,工作人员就要瞥一眼头等舱队伍是否有人来了,如果有人,就要转到头等舱这边先处理。直到头等舱这边队伍空了,才能再回过头来处理经济舱的乘客。

至于什么 API 注册的是宏任务,什么 API 会是微任务,你可以详细去查一下。

本质就是为了区分任务的优先级。

又怨 2022-09-19 13:07:50

可以这样理解 只有promise是微任务(还有其他的不常用),其他的都是宏任务

有一个队列,js执行,点击事件,setTimeout都是往队列里推一条任务,这就是你说的宏任务

在每个宏任务执行完成后会调用:本轮被加入进去的微任务

然后下一个宏任务

console.log('task 1')

Promise.resolve().then(() => {
    console.log('task 1之后的微任务')
    setTimeout(() => {
      console.log('task 3')
    }, 0)
})

setTimeout(() => {
    console.log('task 2')
}, 0)

console.log('task 1 end')
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文