我试图将JSON保存到一个变量中,但似乎我不明白这里的一切。我让JSON以我喜欢的方式出现在console a中一次,但在我尝试再次调用它之后,它只返回promise。如何将JSON保存到变量中,以便以后可以使用JSON中的对象?
var jsondata = fetch(url).then(
function(u){ return u.json();}
).then(
function(json){
console.log(json);
}
)
console.log(jsondata);
字符串
6条答案
按热度按时间odopli941#
fetch API是基于Promise的,并且总是返回一个新的Promise,无论是resolved还是rejected。您有多个选项来返回结果。
异步/等待
字符串
回调
型
pbpqsu0x2#
字符串
基本上,一旦promise解析为实际数据,您就需要分配
jsondata
变量。目前,您正在将整个promise赋值给您的jsondata
变量,这不是您想要的。mlmc2os53#
你可以在fetch函数之外创建一个单独的函数来处理JSON数据,就像下面的代码一样,fetch函数将完整的JSON对象传递给另一个名为“data_function”的函数,我们可以通过这个“data_function”继续处理JSON对象。
字符串
mepcadol4#
另一种选择是使用回调作为参数,这样就不会将变量暴露给全局范围。
字符串
http://jsfiddle.net/5gch2yzw/
rqdpfwrv5#
在本例中,您可以创建另一个异步函数
getData()
,并将来自获取的URL的数据添加到全局变量。当调用
getData()
函数时,它使用fetchData()
函数从提供的URL异步获取城市数据。一旦成功获取数据,它将被添加到全局变量citiesData
中,您可以在代码的其他部分使用该数据。字符串
mjqavswn6#
最简单的方法是使用async/await方法。
简单地复制并粘贴以下代码到你的chrome开发控制台来看看魔术:
字符串