// js執行機制:
// js是單執行緒語言,但是允許同步和非同步執行
//同步就是乙個任務完成後再下乙個,非同步就是可以多個任務同時進行.
//問題1 : 結果是 1111 333 2222
console.log(1111)
settimeout(function () , 2000);
console.log(333333333)
//問題2:
//同步任務: 同步任務都在主線程上執行,形成乙個執行棧
//非同步任務:js的非同步是通過**函式實現的 ,一般非同步任務有三種型別:
//1.普通事件,如click,resize等
//2.資源載入, 如 load, error等
//3.定時器,包括setinterval,settimeout等
//非同步任務相關的**函式新增到任務佇列中(任務佇列也叫做訊息佇列)
console.log(1111)
settimeout(function () , 0);
console.log(333333333)
//輸出結果是: 1111 333 2222;
//問題2的執行步驟: 先把執行棧的同步任務執行完,然後依次讀取任務佇列中的非同步任務,被讀取的任務進入執行棧,開始執行.
//問題3: 事件迴圈
console.log(1111)
document.onclick = function ()
settimeout(function () , 5000);
console.log(333333333)
//這個會先輸出 111 3333,然後根據點選時間,
// 0-5s點選: 任務佇列中會依次有onclick和settimeout兩個任務,結果會先輸出click再222;
// 5s以後點選:任務佇列中會依次有 settimeout和onclick兩個任務,結果會先輸出222再click
//在這個過程中,主線程執行完,會查詢任務佇列,取出乙個任務,推入主線程處理,
//然後繼續重複該動作, 該過程稱為事件迴圈
JS執行機制
js是單執行緒的,settimeout和setinterval是非同步任務,要掛起,不先執行,等同步任務完成之後,再去處理非同步任務 console.log 1 settimeout function 0 console.log 3 console.log 4 輸出 1 3 4 2console.l...
JS執行機制
輸出結果為 1,2,3 js是從上到下執行的 js是單執行緒的,即在同一時間只能做一件事情 遇到同步程式,直接執行 遇到非同步程式,先掛起,等同步程式執行完畢後再執行 同步佇列 優先順序最高 非同步佇列 遇到非同步佇列先掛起,等同步佇列執行完後,再選擇執行非同步佇列的某個 settimeout中的時...
JS執行機制
js單執行緒 在同一時間js只能做一件事。為什麼是單執行緒?如果多執行緒,同時操作乙個dom會出問題。非阻塞 event loop 事件迴圈 任務佇列 同步任務佇列要優先於非同步任務佇列處理。非同步任務被分為巨集任務和微任務。常見的非同步任務分類如下 巨集任務 定時器系列,dom事件 ui互動事件 ...