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

如何将API返回结果转为对象并赋值给自定义变量?

正确实现方式

你当前的写法有问题:fetch是异步操作,直接把它赋值给newdata,得到的只是一个Promise对象,不是API返回的实际数据。下面是两种可行的实现方法:

方法一:通过then链式调用存储数据

要拿到API返回的对象,得在异步请求完成后的then回调里给变量赋值,因为只有此时数据才准备好:

function covertApiTobj(){
    let newdata; // 提前声明变量
    fetch('https://api.chucknorris.io/jokes/random?category=dev')
      .then(res => res.json())
      .then(data => {
          console.log(data);
          newdata = data; // 在这里完成赋值
          // 任何需要使用newdata的逻辑都要放在这个回调里或者后续的then中
          console.log('已存储的数据:', newdata);
      });
}

方法二:用async/await简化异步逻辑

这种写法更贴近同步代码的逻辑,可读性更高:

async function covertApiTobj(){
    // 等待请求完成并解析JSON
    const response = await fetch('https://api.chucknorris.io/jokes/random?category=dev');
    const newdata = await response.json();
    // 现在newdata就是API返回的对象了
    console.log(data);
    console.log('已存储的数据:', newdata);
}

补充:如果需要在函数外部使用newdata,可以让函数返回Promise,然后在外部通过then或await获取数据,比如:

async function covertApiTobj(){
    const response = await fetch('https://api.chucknorris.io/jokes/random?category=dev');
    return await response.json();
}

// 外部使用
covertApiTobj().then(newdata => {
    console.log('外部获取到的数据:', newdata);
});

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 02:28:30