Javascript 如何使用AngularJs工厂处理承诺?

Javascript 如何使用AngularJs工厂处理承诺?,javascript,angularjs,Javascript,Angularjs,我有angularJs getter和setter工厂来获取processkey,setter按预期工作,我在processFactory中有processkey,但当我从控制器调用getProcessid时,它会抛出下面的错误 如何使用AngularJS解决此问题 ctrl.js processFactory.setProcessId($stateParams.processId); processFactory.getProcessId().then(function(re

我有angularJs getter和setter工厂来获取
processkey
,setter按预期工作,我在
processFactory
中有
processkey
,但当我从控制器调用
getProcessid
时,它会抛出下面的错误

如何使用AngularJS解决此问题

ctrl.js

   processFactory.setProcessId($stateParams.processId);


    processFactory.getProcessId().then(function(response){
                  var processKey = response;
                  consoel.log('PROCESSKEY GETTER',processKey)
                });
factory.js

 setProcessId: function(id){
          processKey = id;
        },
 getProcessId: function(){
          return processKey;
        }
错误

angular.js:11594 TypeError: processFactory.getProcessId(...).then is not a function

我想没有asyn操作,所以你可以简单地-

$cookies.put("", token);
var processKey = processFactory.getProcessId();
如果您想在函数内部执行一些异步操作,那么您可能需要使用promise。。。不过,如果您想让控制器代码正常工作,您可以编写如下内容:-

       getProcessId: function(){
                var defer = $q.defer();               
                defer.resolve(processKey);
                return defer.promise;
        }

getProcessId正在返回一个ID;它需要回报一个承诺,然后解决这个承诺。(我假设在现实生活中,这将是异步代码,否则这里不需要承诺)我如何在设置值后销毁该值,因为它只在某些情况下需要,但它总是在控制器中出现。您可以在工厂中使用另一个函数来执行该操作,或者您可以使用set函数简单地重置该值。