检索内在承诺的价值

时间:2015-02-16 15:15:55

标签: javascript angularjs location promise angular-promise

我试图从控制器访问嵌套的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

1 个答案:

答案 0 :(得分:2)

您将返回一个承诺,并应使用then打开它:

LocationService.getCurrentCity().then(function(response) {
    // This is never executed
    console.log('City name retrieved');
    console.log(response);
});

Promise使用返回值就像同步值一样 - 当你调用getCurrentCity时它会返回一个你可以使用then解包的promise。