Javascript AngularJS提供工厂方法的成功回调
我有一个简单的工厂,它在异步请求后返回一个承诺Javascript AngularJS提供工厂方法的成功回调,javascript,angularjs,ionic-framework,Javascript,Angularjs,Ionic Framework,我有一个简单的工厂,它在异步请求后返回一个承诺 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(st
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函数添加什么?在这种情况下,
$http
服务已返回承诺,无需使用$q.defer()
创建另一个承诺。你可以这样写:
getUpdates: function () {
return $http.get(...);
}
这样,success()
和error()
方法仍然可用
或者,如果您确实有理由使用
$q.defer()
,请将其包含在问题中。您然后函数处理承诺的成功与失败:
factory.getUpdates()
.then(function(value) {
// handle success
}, function(reason) {
// handle failure
});
成功和错误仅在$http上可用,因为您将返回q promise use,如下所述。这非常好。我想这就是我想要的:)
factory.getUpdates().then(
//onSucess
function(response)
{
// ...
},
//onError
function()
{
// ...
}
);