现在网络上关于承诺的所有东西都说,除了angular.js上的docs/examples之外,在使用承诺时不要使用defer。
不使用defer返回angular.js$promise的值的正确方法是什么?
以下是我目前拥有的:
function foo() {
var deferred = $q.defer();
userService.findProgramsByUser({personId: personId}).$promise
.then(function (programs) {
deferred.resolve(programs);
});
return deferred.promise;
}
如果我使用的是node q库,我会这样做:
function foo() {
return Q.promise(function(resolve, reject) {
userService.findProgramsByUser({personId: personId})
.then(function (programs) {
resolve(programs);
});
}
}
我怎样才能在不使用defer的情况下,用一个明确的承诺来做类似的事情呢?
最佳答案
既然userService.findProgramsByUser()
已经有了promise属性,就返回它
function foo() {
return userService.findProgramsByUser({personId: personId}).$promise
.then(function (programs) {
return programs;
}, function(){
// handle errors
});
}