如何从获取API而不是Ajax将数据存储到var

时间:2018-11-26 20:19:23

标签: javascript fetch fetch-api

如何获取数据然后保存在变量中?

var store;

fetch('https://api.coindesk.com/v1/bpi/historical/close.json?start=2013-09-01&end=2013-09-05')
.then(function(response) {
  return response.json();
})
.then(function(data) {
  store = data;
  console.log('Data is', store);

})
.catch(function(err) {
  console.log('Unable to fetch the data', err);
});

console.log(store);

console.log给了我未定义的变量。 有人可以描述它是如何工作的吗?

1 个答案:

答案 0 :(得分:0)

我假设您正在谈论的未定义控制台日志是最后一个。我转载了您的提取代码,并且运行良好。我认为正在发生的事情是,最后一行(console.log(store))发生在之前之前,因为获取是异步的,所以存储变量已作为获取行的一部分进行了更新。

如果您需要对fetch的结果进行处理,则必须将其嵌套在promise解析中(即,您在其中重新定义store),或者使用async / await来使{{1 }}代码同步运行,并在控制台日志结束前运行。