我在互联网上寻找这些东西,结果发现: https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch。我对打字稿还不太陌生,所以有些事情让我感到困惑。
首先,之间有什么区别
fetch('data.json')
.then(function(response) {
return response.json();
})
.then(function(myJson) {
console.log(JSON.stringify(myJson));
//data = myJson;
});
和
fetch('data.json')
.then(function(response) {
console.log(JSON.stringify(response.json()));
//data = response.json();
})
第一个工作良好,但是第二个代码却无效。这是为什么?据我所知,fetch
重塑了JSON
的承诺,在.then
中,response.json()
持有实际的JSON
对象。但是第二个版本不起作用(我在控制台中获得undefined
。
我的第二个问题是如何得出myJson
的值。我尝试使用全局变量来执行此操作,但是它不起作用(我在控制台中收到undefined
):
var data
fetch('data.json')
.then(function(response) {
return response.json();
})
.then(function(myJson) {
//console.log(JSON.stringify(myJson));
data = myJson;
});
console.log(JSON.stringify(data));
答案 0 :(得分:1)
我们需要使用response.json()
的原因是因为Fetch
返回了HTTP响应。要从响应中提取JSON正文内容,我们使用json()
方法。
获得undefined
的原因是由于JavaScript的async
性质。尝试使用async
和await
解决此问题,或在then()
内部而不是外部打印数据。