我有一个简单的工厂,可以在异步请求后返回承诺。

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(),请在问题中包括它。

关于javascript - AngularJS提供工厂方法的成功回调,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24992036/

10-09 19:51