異步任務指的是,不進入主線程、而進入"任務隊列"(task queue)的任務,只有等主線程任務執行完畢,"任務隊列"開始通知主線程,請求執行任務,該任務才會進入主線程執行。
分為了以下兩種
宏任務
- 宏任務就是將當前任務放在下一個任務列最頂部
微任務
- 微任務會將當前任務放入下一個任務列的底部
主要的異步任務有
- Events:javascript各種事件的執行都是異步任務
- setTimeout、setInterval 定時器 特別的如果將setTimeout()的第二個參數設為0,就表示當前代碼執行完(執行棧清空)以后,立即執行(0毫秒間隔)指定的回調函
- queueMicrotask 執行微任務
- XMLHttpRequest(也就是 Ajax)
- requestAnimationFrame 類似於定時器,但是是以每一幀為單位
- fetch Fetch API 提供了一個 JavaScript 接口,用於訪問和操縱 HTTP 管道的一些具體部分
- MutationObserver 創建並返回一個新的 MutationObserver 它會在指定的DOM發生變化時被調用。
- Promise
- async function