javascript async/await是什么_如何用它简化异步代码?

2次阅读

async/await 是 javaScript 中基于 promise 异步 语法糖,使异步代码更直观;async 函数自动返回 Promise,await 暂停执行等待 Promise 完成,需用 try/catch 错误处理,并行任务应配合 Promise.all()。

javascript async/await 是什么_如何用它简化异步代码?

async/await 是 javascript 中处理异步操作的语法糖,它让基于 Promise 的异步代码写起来像同步代码一样直观、易读、易维护。 它没有改变异步本质,只是提供了更简洁的写法,避免了 Promise 链式调用(.then().then())和回调地狱。

async 函数:自动返回 Promise

在函数声明前加 async 关键字,这个函数就变成了“异步函数”。它会自动把返回值包装成 Promise —— 即使你 return 一个普通值,也会被 resolve;如果抛出错误,会被 reject。

  • return 123 → 等价于 Promise.resolve(123)
  • throw new Error(‘oops’) → 等价于 Promise.reject(new Error(‘oops’))
  • 不写 return → 等价于 Promise.resolve(undefined)

await:暂停执行,等待 Promise 完成

await 只能在 async 函数内部使用 。它会让 js 引擎暂停当前 async 函数的执行(但不会阻塞线程),等待右侧的 Promise settle(fulfilled 或 rejected),然后继续执行。

  • await fetch(‘/api/user’) → 等待网络请求完成,拿到 Response 对象
  • await response.json() → 等待解析 json 完成,拿到数据对象
  • await 后面不一定是 Promise,非 Promise 值会被自动转为 Promise.resolve(value)

错误处理:用 try/catch 替代 .catch()

因为 await 让异步流程看起来是“线性”的,所以可以用熟悉的 try/catch 捕获错误,比链式 .catch() 更自然、更贴近同步逻辑。

立即学习Java 免费学习笔记(深入)”;

  • 所有 await 行都可被同一个 try/catch 包裹,不用每个都写 .catch()
  • reject 的 Promise 会直接抛出异常,进入 catch 块
  • 示例:try {const data = await fetch(‘/api’).then(r => r.json()); } catch (err) {console.error(‘ 请求失败 ’, err); }

并行执行多个 异步任务:别忘了 Promise.all()

await 是串行的 —— 写两个 await 就是等完第一个再等第二个。想同时发起多个请求(比如拉用户信息 + 拉订单列表),应该先创建 Promise,再 await Promise.all()。

  • ❌ 错误(串行,慢):const user = await getUser(); const orders = await getOrders();
  • ✅ 正确(并行,快):const [user, orders] = await Promise.all([getUser(), getOrders()]);
  • 注意:Promise.all() 中任一 Promise reject,整个就会失败;如需容错,可用 Promise.allSettled()

基本上就这些。async/await 不复杂,但容易忽略细节 —— 记住 async 返回 Promise、await 只在 async 里用、错误用 try/catch、多任务记得用 Promise.all(),异步代码就能既清晰又高效。

以上就是

站长
版权声明:本站原创文章,由 站长 2025-12-18发表,共计1460字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
1a44ec70fbfb7ca70432d56d3e5ef742
text=ZqhQzanResources