JavaScript的执行机制简单来说就先执行同步代码,然后执行异步代码,而异步的代码里面又分为宏任务代码和微任务代码,先执行微任务,然后执行宏任务。首先会将所有JavaScript作为一个宏任务执行,遇到同步的代码就执行,然后开始分配任务,遇到宏任务就将它的回调分配到宏任务的队列里,遇到微任务的回调就分配到微任务的队列里,然后开始执行所有的微任务。执行微任务的过程还是遵循先同步然后分配异步任务的顺序,微任务执行完毕之后,一次Event-Loop的Tick就算完成了。接着挨个去执行分配好的宏任务,在每个宏任务里又先同步后分配异步任务,完成下一次Tick,循环往复直到所有的任务全部执行完成。
微任务包括:process.nextTick ,promise ,MutationObserver。
宏任务包括:script , setTimeout ,setInterval ,setImmediate ,I/O ,UI rendering。
