async/await使异步代码线性化,消除嵌套与回调地狱,支持清晰变量作用域、集中错误处理(try/catch)、灵活并发控制(Promise.all)及直观调试体验。
async/await 让异步代码回归线性结构,把“等完 A 再做 B”这种自然逻辑直接写成逐行语句,不用嵌套、不用传参、不用记中间值在哪一层。
Promise 链容易写成 .then(a => b(a)).then(b => c(b)),读的时候得来回跳转、反向推依赖;而 async/await 把它拉直:
const user = await getUser();const orders = await getOrders(user.id);const logistics = await getLogistics(orders[0].id);变量名清晰、作用域明确,哪一步出问题、哪一步要调试,一眼就能定位。
原来每个 .then() 后面都可能跟一个 .catch(),漏一个就可能静默失败;现在统一用 try/catch 包住整个流程:
串行等待很直观,但需要并行时也不用改写风格:
const a = await api1(); const b = await api2();
const [a, b] = await Promise.all([api1(), api2()]);
在编辑器里点断点,执行会真正在 await 那一行暂停,等结果回来再继续;不像 Promise 链那样跳进微任务队列、堆栈难追踪。变量始终在当前作用域可见,不用靠 console.log 或反复查上一层 then 的参数名。