Front-end-learning-to-organize-notes
Front-end-learning-to-organize-notes copied to clipboard
js宏任务和微任务
宏任务:script(整体代码)、setTimeout、setInterval、I/O、UI交互事件、postMessage 微任务:Promise.then、Object.observe、MutaionObserver
-
微任务和宏任务是绑定的,每个宏任务在执行时,会创建自己的微任务队列。
-
无论什么情况下,微任务都早于宏任务执行。(因为在微任务中产生的宏任务也是要插入到消息队列或者是延迟队列的末尾的,这肯定是需要下一次事件循环才有可能被执行的,而微任务在这一次的事件循环之前就会被执行。)
-
微任务的执行时长会影响到当前宏任务的时长。(比如一个宏任务在执行过程中,产生了 100 个微任务,执行每个微任务的时间是 10 毫秒,那么执行这 100 个微任务的时间就是 1000 毫秒,也可以说这 100 个微任务让宏任务的执行时间延长了 1000 毫秒。所以你在写代码的时候一定要注意控制微任务的执行时长。)