Angularjs:使用返回promise的函数

时间:2016-12-19 08:47:53

标签: angularjs promise

一旦我调用的函数(执行对服务器的调用)完成,我想做一些处理。

我试过了:

vm.myFunction().$promise.then(function(){
    //some treatment done once vm.myFunction() is finished....
})


vm.myFunction = function(){
    var deferred = $q.defer();
        myResource.get(function(result){
            vm.results = result;
            for (var i=0; i<vm.results.length;i++){
                if (vm.results[i].state == 'open'){
                    deferred.resolve();
                    return deferred.promise;
                }
            }
        })
};

但我得到了一个

  

angular.js:13294 TypeError:无法读取属性'$ promise'   未定义

我该怎么做?

3 个答案:

答案 0 :(得分:3)

您必须在函数末尾返回deferred.promise。

vm.myFunction = function(){
    var deferred = $q.defer();
    myResource.get(function(result){
        vm.results = result;
        for (var i=0; i<vm.results.length;i++){
            if (vm.results[i].state == 'open'){
                deferred.resolve();
            }
        }
    });
    return deferred.promise;
};

答案 1 :(得分:0)

试试这段代码,

vm.myFunction().then(function(){
  //some treatment done once vm.myFunction() is finished....
})


vm.myFunction = function(){
var deferred = $q.defer();
    myResource.get(function(result){
        vm.results = result;
        for (var i=0; i<vm.results.length;i++){
            if (vm.results[i].state == 'open'){
                deferred.resolve();
            }
        }
    })
   return deferred.promise;
};

答案 2 :(得分:0)

感谢你的所有答案,我设法使用:

vm.myFunction = function(){
        return myResource.get(function(result){
            vm.results = result;
            for (var i=0; i<vm.results.length;i++){
                if (vm.results[i].state == 'open'){
                    //....
                }
            }
        })
};