首页 > 解决方案 > 使用 fetch() 将数据传递给另一个函数

问题描述

我正在尝试编写一组调用 openstreetmaps API 并解析国家代码的函数,然后将其附加到 URL 以更新 window.location。我已经想出了如何使用异步获取来达到可以正确返回国家代码的地步,但是重新加载页面上的 URL 不是显示国家代码,而是显示 [object%20Promise]。我试图弄清楚为什么它不只发回国家代码而是发送承诺。我用谷歌搜索,似乎找不到任何关于从异步获取中返回值的信息,所以我假设我做错了什么。

<script>
async function countryCode(lat, long)
  {
    
    var buildURL = 'https://nominatim.openstreetmap.org/reverse?lat=' + lat + '&lon=' + long + '&format=json&zoom=3';
    var twoLetterCode = await fetch(buildURL)
        .then(response => {
          return response.json();
      })
        .then(data => {var jsonData = data;
                       var addressInfo = jsonData.address;
                       var code = addressInfo.country_code                           
                       return code;
                      });
    console.log(`Code is: ` + twoLetterCode);   
    return twoLetterCode;
   
  }

function getLocation(){
   navigator.geolocation.getCurrentPosition(function(position) {
    let mapJson = countryCode(position.coords.latitude, position.coords.longitude);
     window.location = window.location.href.split('?')[0] + "?lat=" + position.coords.latitude + "&lon=" + position.coords.longitude + "&loc=" + mapJson;
   });
 
}
</script>

标签: javascriptfetch

解决方案


推荐阅读