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

如何在Node.js中将Axios GET请求的响应存储为JSON?

解决Axios请求返回Promise { }的问题

核心原因

async 函数执行后必然返回一个 Promise 对象,你直接将函数赋值给变量并立即打印时,Promise还处于未完成(pending)状态,所以会输出Promise { <pending> }。另外你的代码混用了await和.then(),写法冗余且容易造成逻辑混乱。

修正方案

1. 优化函数内部逻辑(去掉冗余的.then())

直接用await接收Axios的响应结果,无需额外嵌套.then(),代码更简洁清晰:

const { default: axios } = require("axios");

async function getAvgPrice() {
    try {
        // 直接通过await获取响应对象
        const response = await axios.get("https://api.com/example.json");
        console.log(response);
        // 返回API返回的JSON数据(通常在response.data中)
        return response.data;
    } catch (error) {
        // 捕获请求失败的异常,避免程序崩溃
        console.error("请求出错:", error);
        return null;
    }
}

2. 正确获取函数的返回结果

有两种合法方式获取async函数的最终返回值:

方式一:在async环境中使用await调用
// 必须在async函数内使用await
async function run() {
    const result = await getAvgPrice();
    console.log(result); // 这里会输出正确的JSON响应数据
}

run();
方式二:用.then()处理Promise回调
getAvgPrice().then(result => {
    console.log(result); // 这里会输出正确的JSON响应数据
}).catch(error => {
    console.error("处理失败:", error);
});

额外提示

  • 如果你需要将响应存入数组,直接在函数内创建数组并push即可,但注意response.data才是API返回的纯JSON数据,response是Axios封装的完整响应对象(包含状态码、请求头等信息)。
  • 永远不要忽略错误处理,网络请求随时可能失败,try/catch或.catch()能避免未捕获异常导致程序终止。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.20 11:53:21