1 宏任务 常见的有setTimeout ,setInterval等

2 微任务 常见的有Promise, process.nextTick等

执行过程:js执行时,首先从macrotask queue中取出第一个宏任务,执行完毕后,从microtask中取出所有微任务执行,接住再从macrotask中取出一个宏任务执行。

script

//宏任务

setTimeout(()=>{

console.log(1)

})

//微任务

new Promise((resolve,reject)=>{

console.log(2)//同步任务

resolve(3)

}).then(data=>{

console.log(4)

})

script

//结果:2,4,1

过程:script为最大一层宏任务,执行完毕后执行所有微任务,再继续执行宏任务队列第一个任务。