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

Node.js中调用axios.all封装的异步函数无法获取返回值如何解决

原因说明

所有标记为async的函数,调用后始终返回一个Promise实例,你直接打印调用结果得到的是Promise对象,而非接口返回的实际数据。

正确获取数据的两种方式

方法1:使用await调用

await 必须在async标记的函数上下文中使用,示例如下:

const fetchData = async () => {
  const data = await items()
  console.log('最终获取的数据:', data)
  // 所有需要使用该数据的业务逻辑都要写在当前作用域内
}
fetchData()

如果你的运行环境支持顶级await,也可以直接在全局作用域写const data = await items()。

方法2:使用.then链式调用

不需要额外包裹async函数,直接通过Promise的链式回调获取数据,同时建议增加错误捕获逻辑:

items()
  .then(data => {
    console.log('最终获取的数据:', data)
    // 处理数据的业务逻辑写在这里
  })
  .catch(err => {
    console.error('接口请求失败:', err)
  })
原代码优化建议

你的原代码可以简化为更简洁的写法,且可以用原生Promise.all替代axios.all(兼容性更强,axios最新版本也推荐这种写法):

const items = async () => {
  const requestUrls = [
    "https://api.storyblok.com/v1/cdn/stories/health?version=published&token=wANpEQEsMYGOwLxwXQ76Ggtt",
    "https://api.storyblok.com/v1/cdn/stories/vue?version=published&token=wANpEQEsMYGOwLxwXQ76Ggtt"
  ]
  const promiseList = requestUrls.map(url => axios.get(url))
  const responses = await Promise.all(promiseList)
  return responses.map(item => item.data)
}

内容的提问来源于stack exchange,提问作者Juan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 19:06:01