2014-09-10 100 views
0

我试图返回承诺的输出。但是,我只是得到了实际承诺,而不是价值。返回承诺的输出

我在做什么错?

这里是我的代码:

$rootScope.distance = function(lon1, lat1) { 

    var deferred = $q.defer(); 

    $cordovaGeolocation.getCurrentPosition() 
     .then(function (position) { 
      deferred.resolve(position); 
     }, function(err) { 

     }); 
    return deferred.promise; 


} 

...,结果

enter image description here

+0

我不知道你的目标是什么,但这就是我所期望的......你需要在返回的承诺上调用'then'。当它解决你的回调函数时,将调用你需要的数据(在这种情况下为'position')。如果您的代码如您所示,则不必担心延迟的问题,因为您可以直接返回由'$ cordovaGeolocation.getCurrentPosition'返回的许诺。 – 2014-09-10 12:37:00

+0

我的目标是不必调用'.then' – 2014-09-10 12:37:52

+0

然后你不应该使用承诺:D – 2014-09-10 12:38:40

回答

0

由于承诺是异步的,你不能直接(同步)得到其数值在调用后承诺回函数。你可以做到这一点

$rootScope.updateDistance = function(lon1, lat1) { 
    $cordovaGeolocation.getCurrentPosition() 
     .then(function (position) { 
      $rootScope.distance = position; 
     }); 
}