异步任务指的是,不进入主线程、而进入"任务队列"(task queue)的任务,只有等主线程任务执行完毕,"任务队列"开始通知主线程,请求执行任务,该任务才会进入主线程执行。
分为了以下两种
宏任务
- 宏任务就是将当前任务放在下一个任务列最顶部
微任务
- 微任务会将当前任务放入下一个任务列的底部
主要的异步任务有
- Events:javascript各种事件的执行都是异步任务
- setTimeout、setInterval 定时器 特别的如果将setTimeout()的第二个参数设为0,就表示当前代码执行完(执行栈清空)以后,立即执行(0毫秒间隔)指定的回调函
- queueMicrotask 执行微任务
- XMLHttpRequest(也就是 Ajax)
- requestAnimationFrame 类似于定时器,但是是以每一帧为单位
- fetch Fetch API 提供了一个 JavaScript 接口,用于访问和操纵 HTTP 管道的一些具体部分
- MutationObserver 创建并返回一个新的 MutationObserver 它会在指定的DOM发生变化时被调用。
- Promise
- async function