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

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(),异步代码就能既清晰又高效。
以上就是javascript async/await是什么_如何用它简化异步代码?的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1543486.html
微信扫一扫
支付宝扫一扫