为了账号安全,请及时绑定邮箱和手机立即绑定

从获取请求中获取 json 值 (API)

从获取请求中获取 json 值 (API)

Smart猫小萌 2022-06-16 16:46:30
所以我坚持这一小段代码,我觉得答案很简单,但我就是想不通。我正在尝试执行获取请求以从 API 获取数据。我想获得一些值并将它们放在一个字符串中。问题是我只是不知道如何让 json 超出 fetch 范围。我不断得到一个“未定义”的值。我尝试了不同的方式来获得回报,但似乎没有任何效果......):我的代码是:var url = "https://pokeapi.co/api/v2/pokemon/pikachu"function getJSON(x){   fetch(x)  .then((response) => {    return response.json();  })  .then((data) => {    return data;   });  return data;}var data = getJSON(url); console.log(data);
查看完整描述

3 回答

?
DIEA

TA贡献1820条经验 获得超3个赞

正确的做法是等待 promise 完成,因为它在函数获取数据之前正在打印,这就是为什么后者应该是async,并且应该在它之后完成打印。这可以通过以下方式完成:


var url = "https://pokeapi.co/api/v2/pokemon/pikachu";

async function getJSON(x){ 

     let response = await fetch(x);

     let data = await response.json();

     return data;

}

getJSON(url).then(data => console.log(data)); 


查看完整回答
反对 回复 2022-06-16
?
LEATH

TA贡献1936条经验 获得超7个赞

你的提取没问题。但由于它是异步调用,因此您的 console.log 会在 getJSON 函数有时间返回其响应之前执行。如果您在函数中使用 console.log(data)(在您的 return data 语句之前),您会注意到数据正在按预期返回



查看完整回答
反对 回复 2022-06-16
?
慕少森

TA贡献2019条经验 获得超9个赞

稍微更正了您的代码,如下所示:


fetch('https://pokeapi.co/api/v2/pokemon/pikachu')

  .then(function (response) {

    return response.json()

  })

  .then(function (data) {

    console.log('data', data)

  })


查看完整回答
反对 回复 2022-06-16
  • 3 回答
  • 0 关注
  • 222 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号