检索内在承诺的价值
Retrieving value of inner promise
我正在尝试从控制器访问嵌套承诺的值。
这是我的控制器。我正在调用我的 服务,希望返回一个城市名称:
LocationService.getCurrentCity(function(response) {
// This is never executed
console.log('City name retrieved');
console.log(response);
});
这里是 服务。我正在更新客户端的位置,然后我从 Google 请求城市。 console.log(city)
do 按预期记录正确的城市。
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
?
您正在 return 承诺,应该使用 then
:
展开它
LocationService.getCurrentCity().then(function(response) {
// This is never executed
console.log('City name retrieved');
console.log(response);
});
Promise 通过使用 return 值来工作,就像同步值一样 - 当您调用 getCurrentCity
时,它是 returning 一个您可以使用 then
展开的承诺。
我正在尝试从控制器访问嵌套承诺的值。
这是我的控制器。我正在调用我的 服务,希望返回一个城市名称:
LocationService.getCurrentCity(function(response) {
// This is never executed
console.log('City name retrieved');
console.log(response);
});
这里是 服务。我正在更新客户端的位置,然后我从 Google 请求城市。 console.log(city)
do 按预期记录正确的城市。
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
?
您正在 return 承诺,应该使用 then
:
LocationService.getCurrentCity().then(function(response) {
// This is never executed
console.log('City name retrieved');
console.log(response);
});
Promise 通过使用 return 值来工作,就像同步值一样 - 当您调用 getCurrentCity
时,它是 returning 一个您可以使用 then
展开的承诺。