JavaScript 操作巨集任務與微任務
阿新 • • 發佈:2021-06-27
巨集任務與微任務
- javascript是單執行緒語言(如果多執行緒dom會瘋掉)
- 所以在同一時間只能執行一個任務,稱為主執行緒,用來執行同步任務
- 同時還有兩個任務列表用於存放非同步任務,巨集任務、微任務
- 執行順序為:主執行緒=>微任務=>巨集任務
有關定時程式設計客棧器
- 定時器模組,到達時間點將其放入巨集任務佇列
- 如果主執行緒沒有任務則執行,如果有則等待執行完成後再繼續執行
- 如果有兩個相同時間的定時器則上面的先執行下面的後執行
- 如果兩個時間不同的定時器則時間短的先執行時間長的後執行
注意點:
- 定時器的⏲是在定時器模組中完成的,完成後就和普通非同步任務一樣了,
- 時間方面由於主執行緒實踐過長的原因,有可能會延後
有關Promise
- promise的建構函式為同步任務
- 執行順序永遠為:同步=>微任務=>巨集任務
- 在巢狀程式碼中可能出現巨集任務中有程式設計客棧同步、巨集任務、微任務,這時將他們放到下一次執行中的佇列/主執行緒等待執行
setTimeout(() => { console.log("定時器"); setTimeout(() => { console.log("timeout timeout"); 程式設計客棧 },0); new Promise(resolve => { console.log("settimeout Promise"); resolve(); }).then(() => { console.log("settimeout t程式設計客棧hen"); }); },0); new Promise(resolve => { console.log("Promise"); resolve(); }).then(() => { console.log("then"); }); console.log("ssss");
執行順序:Promise=>ssss=>then=>定時器=>settimeout Pr程式設計客棧omise=>settimeout then=>timeout timeout
DOM渲染任務
瀏覽器渲染:css
可以把js儘量放在下面:避免白屏
任務共享記憶體
任務不會同時執行,會一個一個的被排程,他們共享記憶體
Promise微任務處理複雜業務
使用promise可以將任務變成非同步任務使其不影響同步任務的執行
到此這篇關於javaScript 操作巨集任務與微任務的文章就介紹到這了,更多相關JavaScript巨集任務與微任務內容請搜尋我們以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援我們!