在使用使用xhr而非$ http的第三方库时,在服务中使用promises的正确方法是什么?
getSomething: function(user, repo) {
var deferred = $q.defer();
client.doSomething().promise().then(function(result) {
$rootScope.$apply(function() {
deferred.resolve(result);
});
}, function(err) {
$rootScope.$apply(function() {
deferred.reject(err);
});
});
return deferred.promise;
}
使用像这样的$ rootScope似乎很丑陋而不是Angular-ish,但是将范围作为参数传递也是如此。 有没有更好的方法呢?
答案 0 :(得分:0)
这似乎是$q.when()的完美用途:
将可能是值的对象或(第三方)包装成$ q承诺。当您处理可能会或可能不是承诺的对象,或者承诺来自不可信任的源时,这非常有用。
$q.when()
会返回$q
承诺,因此您的代码可以简化为:
getSomething: function(user, repo) {
return $q.when(client.doSomething().promise());
}