【问题标题】:Can't return data received by Fetch API [duplicate]无法返回 Fetch API 接收到的数据 [重复]
【发布时间】:2021-01-09 13:07:10
【问题描述】:

我正在尝试使用 Fetch 从开放 API 检索数据(汇率)。一切正常,JSON 对象已成功记录到控制台。但是,我还需要所有其他功能都可以访问这些数据。 getCurrencyRates 函数应该返回 JSON 对象,但它返回“未定义”。有什么问题?

<script>
  fetch('https://api.exchangeratesapi.io/latest')
      .then(function(response){
        return response.json();
      }).then(function(json){
    getCurrencyRates(json);
  }).catch(function(error){
    console.log(error);
  });
  // This function should return currency rates in JSON object
  function getCurrencyRates(rates) {
    console.log(rates);
    return rates;
  }
</script>

【问题讨论】:

  • 利用承诺!将 fetch 包装成一个 Promise,解析为您需要的数据。
  • ....或者您可以将响应存储在global variable 中,以便根据需要传递给其他函数。
  • 你需要查看asyncawait
  • 感谢@Always Helping,问题得以解决,但由于某种原因他的回答消失了......
  • @Mr.Engineer 那是因为答案质量非常低且容易出错。这个问题是重复的,请查看另一个问题的答案以了解如何正确进行异步编程。

标签: javascript json fetch-api


【解决方案1】:

你可以这样做:

<script>
let currencyRates;

  fetch('https://api.exchangeratesapi.io/latest')
      .then(response => response.js()
      .then(function(json){
         currencyRates = json;
      }).catch(function(error){
      console.log(error);
  });

  // This function should return currency rates in JSON object
  function getCurrencyRates() {
    return currencyRates;
  }

function anotherFunction() {
   console.log(getCurrencyRates());

   // or just:
   console.log(currencyRates);
}

</script>

【讨论】:

    猜你喜欢
    • 2017-10-07
    • 1970-01-01
    • 2019-03-08
    • 2018-11-12
    • 1970-01-01
    • 2019-10-13
    • 2021-11-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多