JavaScript 中 async/await 与 forEach 搭配使用时的常见陷阱与正确做法
在维护一个后台管理系统的数据导出功能时,我遇到了一个诡异的问题:前端发起导出请求后,接口返回的 Excel 文件总是只有部分数据。排查后发现,代码在 Array.prototype.forEach 中使用了 async/await 来逐条请求数据,但 forEach 不会等待异步回调完成,导致请求在循环结束后才陆续发出,而后续的打包逻辑已经执行了。这个问题在日常开发中很常见,尤其是在需要顺序处理数组元素、每个元素都要发起异步请求的场景下。很多人以为 await 放在 forEach 回调里就能让整个循环暂停,实际上 forEach 内部只是同步调用回调,并不会等待返回的 Promise。这篇文...