Skip to content

异步编程:从回调与 Promise 到 async/await ​

修订于 2026-10-12。本文是概念梳理,没有本站生产实测结论。

异步编程的核心是:等待某项工作完成时,程序不必一直占用当前执行路径。回调、Promise、async/await 是表达异步结果的不同方式;async/await 改善了顺序代码的可读性,但不自动让任务并行。

以 JavaScript 为例,Promise 的处理函数会进入微任务队列。它们在当前同步代码结束后执行;具体调度还要看运行时事件循环。长时间运行的同步计算仍会阻塞主线程,不能靠包装成 Promise 消除。

三类常见错误 ​

  1. 遗漏等待:调用方以为任务完成,实际上写入或通知还在进行。
  2. 失去取消与超时:外层请求结束,内部操作继续消耗资源。
  3. 无界并发:一次创建大量异步任务,压垮数据库或外部 API。

设计时先确认谁拥有任务、如何报告失败、是否允许部分完成,以及能同时运行多少个任务。对多个相关操作,要明确顺序依赖和补偿措施。异步代码的复杂度并没有消失,只是从线程管理转移到任务生命周期与状态管理。

参考资料 ​

梧桐和风 · 让复杂的技术讲得更清楚