js同步異步、事件循環(huán)(宏觀任務(wù)、微觀任務(wù))

我們都知道JavaScript 是單線程,同一個時間只能做一件事。所有任務(wù)需要排隊,當(dāng)前隊列的任務(wù)也分為兩種,一種是同步任務(wù)(synchronous),另一種是異步任務(wù)(asynchronous),在所有同步任務(wù)執(zhí)行完之前,任何的異步任務(wù)是不會執(zhí)行的。

事件=>同步=>異步

其中異步任務(wù)中又分為 宏任務(wù)(macrotasks)、微任務(wù)(microtasks),執(zhí)行到異步任務(wù)時先執(zhí)行宏任務(wù),把宏任務(wù)放入Event Queue,然后在執(zhí)行微任務(wù),在將微任務(wù)放入Event Queue (這里要注意一點微任務(wù)和宏任務(wù)Event Queue是兩個不同的空間)? ?等到回調(diào)的時候是先微任務(wù)然后在宏任務(wù)

執(zhí)行:宏任務(wù)=>微任務(wù)? callback : 微任務(wù)=>宏任務(wù)

宏任務(wù)包括:整體代碼 script,setTimeout,setInterval

微任務(wù)包括:Promise,process.nextTick

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

友情鏈接更多精彩內(nèi)容