国产xxxx99真实实拍_久久不雅视频_高清韩国a级特黄毛片_嗯老师别我我受不了了小说

資訊專欄INFORMATION COLUMN

JavaScript事件循環(huán)(Event Loop)

dmlllll / 3168人閱讀

摘要:事件循環(huán)的順序,決定代碼執(zhí)行的順序。輸出第二輪事件循環(huán)正式結(jié)束三第三輪事件循環(huán)第三輪事件循環(huán)從宏任務(wù)開始。記為遇到,立即執(zhí)行回調(diào)函數(shù)放入中注冊,然后被分發(fā)到微任務(wù)事件隊列中。

1、為什么要有事件循環(huán)?

因為js是單線程的,事件循環(huán)是js的執(zhí)行機(jī)制,也是js實現(xiàn)異步的一種方法。

既然js是單線程,那就像只有一個窗口的銀行,客戶需要排隊一個一個辦理業(yè)務(wù),同理js任務(wù)也要一個一個順序執(zhí)行。如果一個任務(wù)耗時
過長,那么后一個任務(wù)也必須等著。那么問題來了,假如我們想瀏覽新聞,但是新聞包含的超清圖片加載很慢,難道我們的網(wǎng)頁要一直卡著
直到圖片完全顯示出來?因此聰明的程序員將任務(wù)分為兩類:

同步任務(wù)

異步任務(wù)

當(dāng)我們打開網(wǎng)站時,網(wǎng)頁的渲染過程就是一大堆同步任務(wù),比如頁面骨架和頁面元素的渲染。而像加載圖片音樂之類占用資源大耗時久的任務(wù),
就是異步任務(wù)。

2、宏任務(wù)與微任務(wù)

JavaScript中除了廣泛的同步任務(wù)和異步任務(wù),我們對任務(wù)有更精細(xì)的定義:

macro-task(宏任務(wù)): 包括整體代碼scriptsetTimeoutsetInterval

micro-task(微任務(wù)): Promiseprocess.nextTick

不同的類型的任務(wù)會進(jìn)入不同的Event Queue(事件隊列),比如setTimeout、setInterval會進(jìn)入一個事件隊列,而Promise會進(jìn)入
另一個事件隊列。

一次事件循環(huán)中有宏任務(wù)隊列和微任務(wù)隊列。事件循環(huán)的順序,決定js代碼執(zhí)行的順序。進(jìn)入整體代碼(宏任務(wù)-
3、分析更復(fù)雜的代碼
一、第一輪事件循環(huán)
a)、整段                
閱讀需要支付1元查看
<