我正在尝试创建一个使用谷歌地图地理编码器的角度服务,但是我发现来自谷歌的回调是在执行服务函数之后执行的。
控制器
app.controller( 'AppCtrl',['geocoder',function AppCtrl (geocoder) {
var result=geocoder.geocode('greek');
console.log(result);
});
服务
app.service('geocoder',function() {
this.geocode=function(address) {
var geocoder = new google.maps.Geocoder();
geocoder.geocode( { 'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
console.log(results);
return results;
} else {
return ('Geocode was not successful for the following reason: ' + status);
}
});
};
});
问题是,控制器中的console.log(result) 输出未定义,服务中的console.log(results) 在调用函数后从google 获取结果。也就是回调函数没有及时返回结果。
有没有办法克服这个问题?谢谢。