JavaScript入門系列目錄
JavaScript的是單執行緒的語言,按順序執行。事件迴圈(Event loop)是JS的執行機制,也是JS實現各種「非同步」功能的基礎。
瀏覽器本身是多程序的(Edge/Chrome),在系統的的工作管理員中可以看到,只開啟了一個頁面,卻有多個程序。其中渲染程序(瀏覽器核心)就是頁面的管家,負責頁面的渲染、指令碼執行、事件等,每個頁面(瀏覽器頁籤)會有一個獨立的管家——渲染程序。
而在渲染程序中,又有多個執行緒,具有不同的職責,負責不同的事務。比如有定時器執行緒、HTTP請求執行緒、事件觸發執行緒、渲染執行緒、JS引擎執行緒等,除了HTTP執行緒基本都是單執行緒。
setTimeout
/setInterval
定時任務的,當到達指定時間了就把要執行的任務(函數)放到一個任務佇列中,等待JS引擎去執行。so,定時器一般都不準,有一點延遲。也不能這麼說,定時器並沒有錯,應該是佇列和JS引擎的問題。