为什么需要异步编程

JavaScript 是单线程语言,网络请求、文件读写等耗时操作必须异步执行,否则界面会卡死。

回调地狱的问题

多层嵌套回调代码难以维护。

Promise 三态

  • pending:进行中
  • fulfilled:成功
  • rejected:失败
fetch('/api/user').then(res => res.json()).then(data => console.log(data)).catch(err => console.error(err));

async/await 语法糖

ES2017 引入,让异步代码看起来像同步:

async function loadUser() {
  try {
    const res = await fetch('/api/user');
    const data = await res.json();
  } catch (err) { console.error(err); }
}

并行执行

多个独立请求用 Promise.all 并行。

常见陷阱

  • 忘记 await 导致拿到 Promise 对象而非结果
  • 循环中错误使用 await 导致串行执行
  • 漏写 try/catch 导致未捕获异常

声明:本站文章均来源于原创、转载、AI生成等渠道,如有版权及其他问题,请点击反馈,我公司会尽快查实并处理。