使用Typescript / javascript中的访存读取JSON

时间:2019-05-10 17:23:39

标签: javascript typescript

我在互联网上寻找这些东西,结果发现: 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));

1 个答案:

答案 0 :(得分:1)

我们需要使用response.json()的原因是因为Fetch返回了HTTP响应。要从响应中提取JSON正文内容,我们使用json()方法。

获得undefined的原因是由于JavaScript的async性质。尝试使用asyncawait解决此问题,或在then()内部而不是外部打印数据。