乙個**塊中的所有同步**,都會被看作乙個巨集任務,新增到普通資訊佇列的尾部
當你在**中使用 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,此時如何操作其它的陣列物...