第一个方法返回承诺。
getCoordinates() {
return new Promise(function(resolve, reject) {
navigator.geolocation.getCurrentPosition(resolve, reject);
});
}
返回 reverseGeoCode
方法的结果。
async getAddress() {
await this.getCoordinates().then(position => {
let latitude = position.coords.latitude;
let longitude = position.coords.longitude;
let url = Constants.OSMAP_URL + latitude + "&lon=" + longitude;
// Reverse geocoding using OpenStreetMap
return this.reverseGeoCode(url);
});
}
使用自定义类进行 API 调用并返回结果。
reverseGeoCode(url) {
let requestService = new RequestService("json", url);
requestService.call().then(result => {
return result;
});
}
这就是我所说的:
let geoLocation = new GeoLocation();
geoLocation.getAddress().then(r => {
console.log(r);
});
控制台记录未定义。
原文由 Maihan Nijat 发布,翻译遵循 CC BY-SA 4.0 许可协议
显示的片段有几个问题
getAddress()
实际上没有return
任何东西。如果使用
await
then()
,则不需要 —,反之亦然(阻塞或非阻塞,不是两者)。这是一个正确的版本
您还必须以类似的方式重写
reverseGeoCode
,例如