我有一个简单的工厂,它在async.-request之后返回一个promise。
getUpdates: function(){
var q = $q.defer();
$http.get(...)
.success(function(data, status, headers, config) {
q.resolve(data);
})
.error(function(data, status, headers, config) {
q.reject(status);
});
return q.promise;
}
在我的控制器中,我只需调用getUpdates方法并接收承诺。
var updates = factory.getUpdates();
如何提供getUpdates方法的成功/错误功能?
factory.getUpdates().success(function(promise){...}).error(function(err)...
我必须添加到getUpdates函数中吗?
答案 0 :(得分:2)
$http
服务已经返回一个承诺,在这种情况下无需使用$q.defer()
来创建另一个承诺。你可以像这样写:
getUpdates: function () {
return $http.get(...);
}
这样,success()
和error()
方法仍然可用。
或者,如果您确实有使用$q.defer()
的原因,请将其包含在问题中。
答案 1 :(得分:1)
你then
能够处理承诺的成功和失败:
factory.getUpdates()
.then(function(value) {
// handle success
}, function(reason) {
// handle failure
});
答案 2 :(得分:0)
factory.getUpdates().then(
//onSucess
function(response)
{
// ...
},
//onError
function()
{
// ...
}
);