如何从返回的结果中获取值" Promise {$$ state:Object}"

时间:2016-05-05 14:17:21

标签: angularjs ionic-framework angular-promise

我有这个函数,其中GetDataFactory.getDataById(reqData)与$ http请求一起运行并返回正确的数据,当这些数据到达时我想在另一个函数中使用它,但这种方式一直让我回复#34; Promise { $$ state:Object}"

    $scope.getData = function(id) {
                    var reqData = {
                        "id": id,
                        "access_token": $scope.access_token
                    };
                    var foo  =  GetDataFactory.getDataById(reqData).then(function(response) {
                        var foo = response.data[0];
                        return foo;
                    });

                    console.log(foo); // prints "Promise {$$state: Object}" 
        return foo;
}

$scope.anotherFunction = function(){
    var id;
    var bar = $scope.getData(id);
}

我问这个$ http请求成功后如何返回正确的数据值然后将它返回到另一个函数并做我想对这些数据做什么?分配给$ scope.foo类型变量并且超时不是一个选项

1 个答案:

答案 0 :(得分:1)

因为getData函数发出异步请求,所以在访问它返回的数据之前,总是必须等待它完成。你的anotherFunction应该是这样的:

var bar
$scope.getData(id).then( function(response) {
    bar = response.data
})

您可能还想重构getData函数,只是从GetDataFactory.getDataById返回promise,所以它看起来像这样:

$scope.getData = function(id) {
     var reqData = {
         "id": id,
         "access_token": $scope.access_token
      };
      return GetDataFactory.getDataById(reqData)
};

您已经在服务中隔离了数据检索。 getData函数看起来有点过分,但不知道你的所有要求,也许不是。