javascript - 使用 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>
解决方案
推荐阅读
- android - 尝试调用虚拟方法 'void android.widget.Editor$InsertionPointCursorController.hide()'
- html - html页面只有在重新加载后才能正确排列
- php - 如何在以下示例中使用 PHP foreach?
- python - 展开列表列表
- node.js - 无法让 vue cli 4 找到依赖项
- multithreading - 多线程合并排序堆栈溢出错误
- flutter - 在颤动中获取小部件的高度
- mysql - 交叉连接中返回的重复数据具有不同的结果#
- android - 将String设置为Edittext时\ n(新行)的两种方式数据绑定问题
- python - django for python 设置问题