宏任务在下一轮Event Loop执行,微任务在本轮Event Loop的所有任务结束后执行。
常见宏任务: script\setTimeOut、 setInterval、I/O、setImmediate 、各种事件等
常见微任务:promise .then、promise . catch、promise.finally、process.nextTick、async await等
标题常见主线程任务(同步任务):promise实例对象的回调函数
执行顺序:主线程 > 微任务 > 宏任务
宏任务与微任务都能操作异步,
为了解决主线程任务过多的时候,异步回调等待时间国产的问题。用宏、微任务不同的优先级来先实现某些代码
标题宏、微任务的DOM渲染顺序
微任务的DOM渲染 > 主线程的DOM渲染 > 宏任务的DOM渲染
所以不要在.then等微任务中执行耗时的操作,否则会影响后续的DOM渲染与宏任务
标题JS执行机制
I/O、网路请求都是由操作系统执行
主线程:所有的同步任务按顺序执行的队形。又被称为执行栈
耗时的任务挂在主线程的任务队列里,当耗时的任务的回调时,才再将其挂在任务队列里中
主线程的任务都执行完之后才会执行任务队列的任务