在typescript/javascript中使用fetch读取JSON

在typescript/javascript中使用fetch读取JSON,javascript,typescript,Javascript,Typescript,我在互联网上寻找这些东西,我发现: . 我对打字脚本比较陌生,所以有一些事情让我困惑 首先,它们之间的区别是什么: 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) {
    return response.json();
})
.then(function(myJson) {
    console.log(JSON.stringify(myJson));
   //data = myJson;
});

第一段代码可以很好地工作,但第二段代码不行。为什么呢?据我所知,fetch重新运行了JSON和in的承诺。然后,response.JSON保存了实际的JSON对象。但是第二个版本不起作用,我在控制台中没有定义

我的第二个问题是如何获取myJson的值。我试着用全局变量来做,但没用,我在控制台中没有定义:

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));
我们需要使用response.json的原因是Fetch返回HTTP响应。为了从响应中提取JSON正文内容,我们使用JSON方法


未定义的原因是javascript的异步特性。尝试使用async并等待解决此问题,或者在内部而不是外部打印数据。

但是为什么第一段代码有效,第二段代码无效。我在这两个版本中都使用response.json,但第二个版本有一个额外的。然后呢?以及如何同步此操作?等待在ASYNC函数中使用,我希望下面的代码同步运行,我找不到任何类似于C++的连接来做。所以,在第一个FETCH中返回一个HTTP响应,它有很多像头和主体一样的开销。理想情况下,您只需要输入body部分,因此使用response.json,它解析承诺并只提供所需的结果。在第二种情况下,您试图严格化并打印一个承诺,该承诺在打印时可能处于挂起状态。显然,在JS中,我们使用承诺或异步等待来实现同步。将下面的所有代码复制到的内部。然后,它将同步运行。
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));