一触机,事件環(huán)的執(zhí)行順序
Event Loop事件循環(huán)
? ? 1,例子
? ? 2玷或,main script=》微任務(wù)=》宏任務(wù)中的第一項=》微任務(wù)=》宏任務(wù)中的第二項=》微任務(wù)=》儡首。。庐椒。
? ? 3椒舵,執(zhí)行流程
? ? ? ? 1)同步和異步任務(wù)分別進(jìn)入不同的執(zhí)行"場所",同步的進(jìn)入主線程约谈,異步的進(jìn)入Event Table并注冊函數(shù)
? ? ????2)當(dāng)指定的事情完成時笔宿,Event Table會將這個函數(shù)移入Event Queue(事件隊列)。
? ? ????3)主線程內(nèi)的任務(wù)執(zhí)行完畢為空棱诱,會去Event Queue讀取對應(yīng)的函數(shù)泼橘,進(jìn)入主線程執(zhí)行。
? ? ? ? 4)上述過程會不斷重復(fù)迈勋,也就是常說的Event Loop(事件循環(huán))炬灭。
? ? 4,微任務(wù)和宏任務(wù)皆為異步任務(wù)靡菇,它們都屬于一個隊列
? ? ? ? 1)宏任務(wù)一般是:包括整體代碼script重归,setTimeout,setInterval厦凤、setImmediate鼻吮。
? ? ? ? 2)微任務(wù):原生Promise(有些實現(xiàn)的promise將then方法放到了宏任務(wù)中)、process.nextTick较鼓、Object.observe(已廢棄)椎木、 MutationObserver?