宏任务和微任务宏任务微任务由于JS是单线程的编程语言,为了防止程序的阻塞,就会出现异步任务。异步任务完成后会添加进入任务队列,程序会不断的轮询任务队列,有任务就会添加进入主线程执行。 宏任务和微任务异步任务是严格按照时间顺序压栈和执行的,当上一个异步任务执行完成之前,下一个异步任务执行之前,浏览器会重新渲染页面。宏任务和微任务在完成之后会分别压入不同的队列,而主进程完成同步任务后,会去先查找微任务队列,执行完之后就会去执行宏任务。 宏任务 script(整体代码) setTimeout setInterval I/O UI交互事件 postMessage MessageChannel setImmediate(Node.js 环境) 微任务Promise.then Object.observe MutationObserver process.nextTick(Node.js 环境)