JavaScript - 异步编程
异步编程是JavaScript的重要特性,从回调函数到Promise再到async/await,异步处理能力不断进化。
基础 回调与定时器
| 主题 | 说明 | 相关关键字 |
|---|---|---|
| 回调函数 | 将函数作为参数传递给另一个函数,在特定时机执行,是最基础的异步模式,但存在回调地狱问题。 | callback 回调地狱 |
| 定时器 | setTimeout()延迟执行、setInterval()周期执行、clearTimeout()/clearInterval()清除定时器。 | setTimeout setInterval clearTimeout |
| 防抖节流 | 防抖debounce限制函数执行频率、节流throttle固定时间间隔执行,用于优化性能。 | debounce throttle |
进阶 Promise
| 主题 | 说明 | 相关关键字 |
|---|---|---|
| Promise 基础 | Promise三种状态pending/fulfilled/rejected、new Promise()创建、then/catch/finally链式调用。 | Promise pending fulfilled rejected |
| 静态方法 | Promise.resolve()/reject()创建已决议Promise、Promise.all()全部完成、Promise.race()竞速完成。 | Promise.all Promise.race Promise.allSettled |
| Promise 进阶 | Promise.allSettled等待所有完成、Promise.any任意一个完成、Promise finally无论结果如何执行。 | allSettled any finally |
进阶 async/await
| 主题 | 说明 | 相关关键字 |
|---|---|---|
| async 函数 | async声明异步函数、函数自动返回Promise、函数内可使用await等待Promise。 | async await |
| await 等待 | await暂停函数执行等待Promise resolve、捕获rejected用try-catch、错误处理更直观。 | await try-catch |
| 并发控制 | Promise.all()并发等待多个Promise、for循环配合await顺序执行、Promise.race超时控制。 | 并发控制 Promise.all |
进阶 Event Loop
| 主题 | 说明 | 相关关键字 |
|---|---|---|
| 执行机制 | JS单线程、调用栈执行代码、同步代码直接在调用栈执行、异步代码放入任务队列。 | 调用栈 执行栈 |
| 宏任务与微任务 | 宏任务macro-task:setTimeout/setInterval/I/O/UI渲染;微任务micro-task:Promise.then/MutationObserver。 | 宏任务 微任务 |
| 执行顺序 | 每轮事件循环:先执行完所有微任务、再执行一个宏任务、然后渲染UI、更新界面。 | 执行顺序 事件循环 |