Javascript 如何使用AngularJs工厂处理承诺?
我有angularJs getter和setter工厂来获取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
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函数简单地重置该值。