首页 > web前端 > js教程 > 正文

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

夢幻星辰
发布: 2025-12-18 14:19:02
原创
377人浏览过
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() 更自然、更贴近同步逻辑。

Hugging Face
Hugging Face

Hugging Face AI开源社区

Hugging Face 270
查看详情 Hugging Face

立即学习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(),异步代码就能既清晰又高效。

以上就是javascript async/await是什么_如何用它简化异步代码?的详细内容,更多请关注php中文网其它相关文章!

java速学教程(入门到精通)
java速学教程(入门到精通)

java怎么学习?java怎么入门?java在哪学?java怎么学才快?不用担心,这里为大家提供了java速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载
来源:php中文网
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
最新问题
开源免费商场系统广告
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 举报中心 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号