宏任务:[task1,task2,task3…]颗粒度大 实时性不强,要排队
微任务:缩小颗粒度[task1[m1…],task2[m1…],task3[m1…]],直接插队,实时性强
微任务:在上一个宏任务之后,下一个宏任务之前执行。
第一个 script 标签的代码是第一个宏任务
promise里面是同步,promise.then()是微任务,setTimeout是宏任务。
异步任务大致分为:微任务(micro task,如:promise.then、MutaionObserver等)和宏任务(macro task,如:setTimeout、setInterval、I/O等)。
// 1——>2——>3——>5——>4——>setTimeout
console.log(111);
setTimeout(()=>{
console.log("setTimeout");
})
console.log(222);
let p=new Promise((resolve,reject)=>{
resolve('aa')
console.log(333);
})
console.log(p);
p.then(res=>{
console.log(444,res);
},err=>{
console.log(err);
})
console.log(555);