【发布时间】:2019-01-21 10:01:06
【问题描述】:
第一个方法返回promise。
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);
});
控制台日志未定义。
【问题讨论】:
-
getAddress没有return语句,所以它当然会返回一个解析为undefined的Promise -
您的 reverseGeoCode 没有返回任何内容,返回调用在 then() 回调中,这不是外部函数的返回
-
@Quentin
return this.reverseGeoCode(url);这应该在await之外? -
@PatrickEvans 我无法将
then内部的值返回到外部?
标签: javascript asynchronous promise w3c-geolocation