You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用async函数GetInfo返回Promise { pending }如何获取records数组?

问题原因
  • 所有标记了async的函数,无论内部返回什么类型的值,调用后永远会返回一个Promise对象。你直接在最外层同步执行console.log(GetInfo())时,JS主线程不会等待内部的文件读取、CSV解析这类异步IO操作执行完成,此时拿到的自然是还未进入落定状态的Promise { <pending> }。
  • 取消GetInfo内部注释的console.info(records)能看到结果,只是时序上的巧合:外层打印pending状态的Promise后,内部的异步操作刚好在极短的IO等待时间内执行完成,触发了函数内部的打印语句,并不是代码逻辑本身正确拿到了返回值。
修复方案

你的CSV读取、解析逻辑本身没有问题,只需要在最外层调用GetInfo时,等待Promise状态变为resolved后再获取返回值即可,三种常用写法如下:

  • 方案1:使用顶层await(Node.js 14.8+ 版本支持)
// 直接替换原代码最后一行的console.log即可
const records = await GetInfo()
console.log(records)
  • 方案2:用异步立即执行函数包裹调用逻辑(兼容所有支持async/await的Node版本)
// 直接替换原代码最后一行的console.log即可
(async () => {
  const records = await GetInfo()
  console.log(records)
})()
  • 方案3:使用Promise原生then方法获取结果
// 直接替换原代码最后一行的console.log即可
GetInfo().then(records => {
  console.log(records)
})

注意:不要试图在同步代码流里直接拿async函数的返回值,异步逻辑的结果永远只能在await之后、或者then的回调里拿到。

内容的提问来源于stack exchange,提问作者M.K.

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 04:57:06