js异步操作中,微任务宏任务是那些
时间: 2023-11-02 19:56:26 浏览: 87
在 JavaScript 异步操作中,微任务和宏任务都是指异步任务的执行方式。它们的区别在于触发时机和执行顺序。
微任务:通常是 Promise 的回调函数、MutationObserver 的回调函数或者是通过 queueMicrotask() 方法添加的回调函数。它们会在当前宏任务执行完毕后立即执行,执行顺序优先于宏任务。
常见的微任务包括:
- Promise 回调函数
- MutationObserver 回调函数
- queueMicrotask() 添加的回调函数
宏任务:通常是定时器回调函数、事件回调函数、ajax 回调函数等。它们会被添加到宏任务队列中,等待 JavaScript 引擎空闲时才会执行。
常见的宏任务包括:
- setTimeout/setInterval 回调函数
- DOM 事件回调函数
- ajax 回调函数
- requestAnimationFrame 回调函数
相关问题
异步操作中的宏任务与微任务
在异步操作中,宏任务和微任务是两种不同的任务类型,它们决定了执行顺序和优先级。
宏任务(Macrotask)是一组需要异步执行的任务,通常包括以下几种:
1. setTimeout 和 setInterval 回调函数
2. DOM 事件处理程序
3. XMLHttpRequest 和 fetch 的回调函数
4. Node.js 中的 I/O 操作
宏任务会进入事件队列(event queue),在主线程空闲时被执行,每次只执行一个宏任务。
微任务(Microtask)是一组需要在当前任务执行完成后尽快执行的任务,通常包括以下几种:
1. Promise 的回调函数
2. MutationObserver 的回调函数
微任务会在当前任务执行完成后立即执行,而不需要等待其他宏任务。微任务的执行优先级高于宏任务,即微任务会在下一个宏任务之前执行。
在事件循环中,每次执行完一个宏任务后,会检查是否有微任务需要执行,如果有,则会依次执行所有微任务,直到微任务队列为空,然后再继续执行下一个宏任务。
总结起来,宏任务和微任务的区别在于执行时机和优先级。宏任务是异步任务中较大的单位,而微任务是较小的单位,用于在当前任务执行完成后尽快执行。
js 是同步先执行还是异步 异步是微任务先执行还是宏任务
JS是一种单线程语言,Javascript代码的执行是从上到下,同步的执行完成,再执行异步任务。异步任务分为微任务和宏任务两种。微任务会在当前任务执行结束后立即执行,而宏任务会在任务队列中排队等待执行。在每一个宏任务执行完之后,都会先执行所有的微任务,然后再去执行下一个宏任务。所以,异步任务的执行顺序与事件循环有关。
阅读全文