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

所以我坚持这一小段代码,我觉得答案很简单,但我就是想不通。


我正在尝试执行获取请求以从 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);


Smart猫小萌
浏览 223回答 3
3回答

DIEA

正确的做法是等待 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)); 

LEATH

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

慕少森

稍微更正了您的代码,如下所示:fetch('https://pokeapi.co/api/v2/pokemon/pikachu')  .then(function (response) {    return response.json()  })  .then(function (data) {    console.log('data', data)  })
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript