微任务和宏任务谁先执行
时间: 2023-11-02 21:31:05 浏览: 44
在 JavaScript 中,宏任务和微任务都可以被添加到事件循环队列中,但它们的执行顺序是不同的。
当执行一个宏任务时,它会执行完整个任务,包括其中的微任务队列,然后才会执行下一个宏任务。而在宏任务执行过程中,如果产生了微任务,那么这些微任务会被添加到微任务队列中,等待宏任务执行完毕后执行。
因此,微任务的执行优先级要高于宏任务。也就是说,当当前宏任务执行完毕后,会立即执行所有已经添加到微任务队列中的微任务,然后才会执行下一个宏任务。
相关问题
微任务和宏任务 顺序
微任务和宏任务的执行顺序是有区别的。在每一个宏任务中又可以产生微任务,当微任务全部执行结束后执行下一个宏任务。这样的执行顺序可以表示为【宏任务 [微任务】 -> 【宏任务 [微任务】 -> 【宏任务 [微任务】... 宏任务。具体来说,当一个宏任务开始执行时,如果在宏任务的执行过程中产生了微任务,那么这些微任务会被添加到微任务队列中。当当前宏任务执行完成后,会立即执行微任务队列中的任务,直到微任务队列为空。然后才会执行下一个宏任务。这样的执行顺序保证了微任务优先于下一个宏任务的执行。<span class="em">1</span><span class="em">2</span><span class="em">3</span>
#### 引用[.reference_title]
- *1* *2* [干货:宏任务和微任务执行顺序详解](https://blog.csdn.net/frontend_frank/article/details/130096892)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
- *3* [微任务和宏任务哪个先执行?](https://blog.csdn.net/qq_59737146/article/details/128814404)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"]
[ .reference_list ]
微任务和宏任务的区别
微任务和宏任务是在JavaScript中用于管理异步操作的两种不同的执行机制。
微任务(Microtask)是一个相对较小的任务,通常是由Promise对象的回调函数产生的。当一个Promise对象被resolve或reject时,与该Promise相关联的微任务会被添加到微任务队列中等待执行。微任务的执行时机一般在当前任务执行结束后,下一个事件循环之前。常见的微任务包括Promise的回调函数、MutationObserver的回调函数等。
宏任务(Macrotask)是一个相对较大的任务,通常由浏览器提供的API触发,例如setTimeout、setInterval、requestAnimationFrame等。当宏任务被触发时,相关的任务会被添加到宏任务队列中等待执行。宏任务的执行时机一般在当前事件循环结束后,下一个事件循环开始时。
区别总结如下:
- 微任务是相对较小的任务,宏任务是相对较大的任务。
- 微任务的执行时机在当前任务执行结束后,下一个事件循环之前;宏任务的执行时机在当前事件循环结束后,下一个事件循环开始时。
- 微任务的优先级高于宏任务,即微任务会在宏任务之前执行。
- 微任务包括Promise的回调函数、MutationObserver的回调函数等;宏任务包括setTimeout、setInterval、requestAnimationFrame等。
需要注意的是,微任务和宏任务的执行顺序是有区别的,具体执行顺序可以参考相关规范(例如HTML规范或JavaScript规范),不同浏览器也可能有差异。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)