async/await的核心价值在于使异步代码线性自然:支持串行await、统一try/catch错误处理、同步异步逻辑混排清晰;但await默认串行,独立任务需用Promise.all等实现并发。

async/await 的核心价值在于让异步代码写起来像同步代码一样自然,尤其适合需要按顺序执行多个异步任务的场景——不再需要层层嵌套 .then(),也不用手动管理 Promise 链的断裂与错误传递。
用 await 串行等待多个异步操作
当几个异步任务必须一个接一个执行(比如先登录、再获取用户信息、最后拉取配置),直接 await 每个 Promise 即可,代码自上而下线性流动:
- 每个 await 会暂停当前 async 函数的执行,直到右侧 Promise settled(fulfilled 或 rejected)
- 后续语句自动在前一个完成后再运行,无需显式回调或链式调用
- 变量可直接赋值使用,避免了 .then() 中作用域嵌套导致的变量不可见问题
错误处理更贴近 try/catch 直觉
异步失败不再需要为每个 .then() 配一个 .catch(),而是统一用 try/catch 包裹整个逻辑块:
- 任意 await 表达式抛出异常(包括 Promise.reject() 或 throw new Error()),都会被外层 catch 捕获
- 可以集中处理不同步骤的失败,也可以在特定步骤加单独的 try/catch 做局部容错
- 避免了 Promise 链中“吞掉错误”或 catch 位置不当导致的静默失败
混合同步与异步逻辑更清晰
实际业务中,顺序流程常夹杂同步计算(如拼接参数、校验字段)和异步调用。async/await 允许它们自然混排:
- 同步代码照常执行,不额外包装;异步部分只加 await,语义明确
- 不需要把同步逻辑也塞进 Promise.resolve() 或额外的 then 里“对齐”风格
- 调试时堆栈更完整,await 行就是暂停点,便于断点和单步追踪
注意:await 并不自动并发,需主动优化
如果多个异步任务彼此独立(如并行请求用户数据和订单数据),直接 await 会变成串行,拖慢整体耗时。此时应:
- 先用 Promise.all() 或 Promise.allSettled() 并发发起所有请求
- 再 await 解构结果,保持逻辑顺序感,又不牺牲性能
- 避免误以为 “用了 await 就是高效”,关键在理解何时该串、何时该并

















