如何将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
相关产品推荐
相关产品推荐

