我试图从控制器访问嵌套的promise的值。
这是我的控制器。我打电话给我的服务,期望返回城市名称:
LocationService.getCurrentCity(function(response) {
// This is never executed
console.log('City name retrieved');
console.log(response);
});
这是服务。我正在更新客户的位置,然后我从Google请求该城市。 console.log(city)
执行按预期记录正确的城市。
this.getCurrentCity = function() {
return this.updateMyPosition().then(function() {
return $http.get('http://maps.googleapis.com/maps/api/geocode/json?latlng=' + myPosition.lat + ','+ myPosition.lng +'&sensor=false').then(function(response) {
var city = response.data['results'][0]['address_components'][3]['long_name'];
console.log(city);
return city;
});
});
}
如何访问控制器中的city
?
答案 0 :(得分:2)
您将返回一个承诺,并应使用then
打开它:
LocationService.getCurrentCity().then(function(response) {
// This is never executed
console.log('City name retrieved');
console.log(response);
});
Promise使用返回值就像同步值一样 - 当你调用getCurrentCity
时它会返回一个你可以使用then
解包的promise。