async/await 是 JavaScript 中基于 Promise 的异步语法糖,使异步代码更直观;async 函数自动返回 Promise,await 在其内部暂停执行并等待 Promise 完成,需用 try/catch 捕获错误,支持串行与并行控制,但不改变异步本质。

async/await 是 JavaScript 中处理异步操作的语法糖,它让基于 Promise 的异步代码写起来像同步代码一样直观,大幅降低回调嵌套和错误处理的复杂度。
async 函数:自动返回 Promise 的函数
在函数声明前加 async 关键字,该函数就变成异步函数。它会自动把返回值包装成 Promise;即使你 return 一个普通值(比如 return 42),也会等价于 Promise.resolve(42)。如果函数中抛出错误,则等价于 Promise.reject(error)。
不能直接用 await 在普通函数或全局作用域中 —— 必须在 async 函数内部使用 async 函数本身不执行异步操作,只是提供 await 的执行环境
await:暂停执行,等待 Promise 完成
await 只能在 async 函数中使用,它会让 JS 引擎“暂停”当前函数的执行(实际是让出线程,不阻塞主线程),直到右侧的 Promise 被 fulfilled 或 rejected。之后继续执行后续语句。
const data = await fetch('/api/user').then(res => res.json()) → 简洁写法:const response = await fetch('/api/user'); const data = await response.json(); await 后面不一定是 Promise,也可以是任意值:非 Promise 值会被自动转为 Promise.resolve(value) 错误需用 try/catch 捕获,因为 rejected 的 Promise 会以异常形式抛出
对比传统 Promise 链,更清晰的错误处理与流程控制
以前用 .then().catch() 容易出现“错误被吞掉”或多个 catch 分散的问题;而 async/await 把逻辑收束在统一的 try/catch 块里,条件分支、循环、重试逻辑也更容易组织。
立即学习“Java免费学习笔记(深入)”;
多个请求串行:await api1(); await api2(); await api3(); —— 顺序明确,无嵌套 并行请求:const [a, b] = await Promise.all([fetchA(), fetchB()]); 带错误重试:for (let i = 0; i setTimeout(r, 1000)); } }
注意点:不是万能银弹,仍需理解 Promise 本质
await 并不会让异步变同步,它只是语法层面的简化。底层仍是事件循环和微任务队列。滥用 await(比如本可并行却写成串行)反而会拖慢性能。
避免在循环中无脑 await(除非真要串行)→ 考虑 Promise.all 或 Promise.allSettled await 后的 Promise 如果没被处理(没 try/catch),未捕获的 rejection 会触发 unhandledrejection 事件 不要在 for-in / for-of 循环中直接 await 异步操作(除非有意串行);数组遍历时可用 map + Promise.all
以上就是javascript的async/await是什么_如何简化异步代码?的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1544305.html
微信扫一扫
支付宝扫一扫