宏任务和微任务

简介: 宏任务和微任务

一,什么是宏任务什么是微任务?

宏任务(Macro Tasks)和微任务(Micro Tasks)是指在JavaScript中异步任务队列中执行的不同类型任务。

二,宏任务

宏任务(Macro Tasks)包括以下几种:

主代码块:JavaScript中的主线程代码。

setTimeout和setInterval:定时器任务。

I/O操作:例如文件读写、网络请求等。

UI渲染:浏览器需要重绘或者重新布局的任务。

三,微任务

微任务(Micro Tasks)包括以下几种:

Promise回调函数:Promise对象的处理程序(then、catch、finally)。

MutationObserver:监测DOM变化的任务。

process.nextTick(Node.js环境下):在当前"执行栈"结束后立即执行的任务。

四,哪些算是宏任务

用户交互事件:例如点击、滚动、输入等用户操作触发的事件。

setTimeout 和 setInterval:通过定时器触发的任务。

网络请求完成事件:例如 Ajax 请求完成时触发的事件。

文件读写操作:包括读取文件、写入文件等涉及到 I/O 操作的任务。

页面解析和渲染:包括 DOM 解析、CSS 解析、页面布局和绘制等与页面渲染相关的任务。

requestAnimationFrame:用于执行动画效果的任务。

五,哪些算是微任务

Promise 回调函数:Promise 对象的处理程序(.then、.catch、.finally)中的回调函数都是微任务。

MutationObserver:用于监测 DOM 变化的任务。

process.nextTick(在 Node.js 环境下):在当前执行栈结束后立即执行的任务。

queueMicrotask():用于将一个微任务添加到微任务队列中。

六,宏任务和微任务的执行顺序

在事件循环(Event Loop)中,当主线程空闲时,会从宏任务队列中选择一个任务进行执行。当一个宏任务执行完毕后,会检查是否有微任务队列,如果有,则将微任务队列中的所有任务依次执行完毕,然后再继续选择下一个宏任务执行。这样的过程循环进行,形成了事件循环。

总结来说,宏任务代表着较大粒度的任务,而微任务代表着较小粒度的任务。微任务通常在宏任务执行完毕后立即执行,因此微任务具有更高的优先级,可以在页面渲染前执行,从而提供更好的用户体验。

 

相关文章
|
6月前
|
JavaScript 前端开发
微任务与宏任务的区别
微任务与宏任务的区别
|
6月前
|
前端开发 JavaScript API
宏任务与微任务执行顺序及对比记录
宏任务与微任务执行顺序及对比记录
160 0
|
前端开发 JavaScript
30 # 宏任务和微任务的区分
30 # 宏任务和微任务的区分
47 0
|
18天前
|
JavaScript 前端开发 调度
在JavaScript中异步任务里的微任务和宏任务的特点和生命周期
在JavaScript中异步任务里的微任务和宏任务的特点和生命周期
34 0
|
2月前
|
前端开发 JavaScript API
JavaScript 的宏任务和微任务有什么区别
【9月更文挑战第6天】JavaScript 的宏任务和微任务有什么区别
43 4
宏任务和微任务的执行顺序是怎样的
宏任务和微任务的执行顺序是怎样的
|
6月前
|
前端开发 JavaScript
微任务与宏任务
微任务与宏任务
30 1
|
5月前
|
JavaScript 前端开发
js中的宏任务与微任务
js中的宏任务与微任务
|
6月前
|
JavaScript 前端开发 调度
(详解)js中什么是宏任务、微任务?宏任务、微任务有哪些?又是怎么执行的?
(详解)js中什么是宏任务、微任务?宏任务、微任务有哪些?又是怎么执行的?
108 1
|
6月前
|
消息中间件 设计模式 监控
宏任务和微任务:不是所有任务都是一个待遇
宏任务和微任务:不是所有任务都是一个待遇
115 2