如何从函数

时间:2015-06-23 11:22:29

标签: javascript angularjs

如何从函数中获取deferre.resolve?

我的控制器称之为:

service.getData().then(function(response){ //myFunc deferred response});

在服务中:

var _getData = function (){
  $http.get(url).success(function(response){
   deferred.resolve(_myFunc(response.Message)); // or just myFunc doesnt matter
  });

  return deferred.promise; //it returns in the end of the function
}

和myFunc也有:

$http.get(url).success(function(response){
 deferred.resolve(response); 
});

return deferred.promise; // also my Func is returning

所以我需要myFunc的延迟解析,在我的控制器中调用的另一个func中调用它并在那里显示

修改 我已经返回deferred.promise 但是它只返回SERVICE函数的第一个承诺而不是myFunc,我需要myFunc的承诺

编辑2

另请参阅卡森德雷克的回答,它并非反模式!

2 个答案:

答案 0 :(得分:4)

如果你想简化if,你实际上可以将这两个变成一个链式调用。

var _getData = function(){
return $http.get(url).then(function(response1){
    return $http.get(response1.data);
}).then(function(response2){
    return response2;
});

<强>更新 Plunkr

答案 1 :(得分:0)

您需要从工厂服务(无论您使用的是什么)返回defer.promise

var _getData = function (){
 var deferred = $q.defer();
 $http.get(url).success(function(response){
   deferred.resolve(_myFunc(response.Message)); // or just myFunc doesnt matter
});
return deferred.promise;
}