簡述Js的事件迴圈

2022-06-25 17:54:07 字數 935 閱讀 6780

乙個**塊中的所有同步**,都會被看作乙個巨集任務,新增到普通資訊佇列的尾部

當你在**中使用 settimeout 或 setinterval 時,會建立乙個巨集任務

延遲指定的時間後,將其放入延遲執行佇列的尾部

為了簡化敘述,我們可以理解為:每一輪事件迴圈都執行乙個巨集任務,每一輪事件迴圈都關聯乙個微任務佇列

具體過程如下:

例題1:

console.log('--開始--');

settimeout(() => , 0);

new promise((resolve, reject) =>

resolve()

}).then(()=>)

console.log('--結束--');

//---開始--

//0//1

//2//3

//4//--結束--

//promise

//timer1

第一輪迴圈:普通資訊佇列中只有乙個巨集任務(整個script)

第二輪迴圈:普通資訊隊列為空,延遲執行佇列中有乙個巨集任務(timer1)

例題2:

new promise((resolve) => ).then(() => , 4)

})settimeout(() => , 4)

console.log('-- 結束--');

//this is executor

//-- 結束--

//this is resolve

//timer2

//timer1

第一輪迴圈:普通資訊佇列中只有乙個巨集任務(整個script)

第二輪迴圈:普通資訊隊列為空,延遲執行佇列頭部為timer2

第三輪迴圈:延遲執行佇列頭部為timer1

js 事件迴圈

js執行的環境稱之為宿主環境。執行棧 call stack 乙個資料結構,用於存放各種函式的執行環境,每乙個函式執行之前他的相關資訊會加入到執行棧中,函式呼叫之前,建立執行環境,然後加入到執行棧中 函式呼叫之後,銷毀執行環境 function a function b function c cons...

JS 迴圈設定事件

input type radio name attr value 1 id attr1 label for attr1 rmb br input type radio name attr value 2 id attr2 label for attr2 my br input type radio ...

JS迴圈新增事件

for var t 0 t ischeckname.length t var importgoodslisttr new array 插入行 alert new date for var n 0 n大家注意紅色字型的內容 將需要迴圈新增事件的物件的value設定為迴圈變數n,此時如何操作其它的陣列物...