常见宏任务:setTimeout、setInterval、requestAnimationFrame、I/O 操作、script(整体代码)
微任务:Promise.then()、MutationObserver、process.nextTick(在 Node.js 中)
在执行完一个宏任务后,如果有微任务队列存在,那么会先清空微任务队列,然后再执行下一个宏任务。
console.log('datagrand1');setTimeout(() => {console.log('datagrand2');});const p1 = new Promise(resolve => {console.log('datagrand3');resolve();});p1.then(() => {console.log('datagrand4');});console.log('datagrand5');const p2 = new Promise(resolve => {console.log('datagrand6');resolve();});p2.then(() => {console.log('datagrand7');});//输出:1356472