AngularJS提供了工厂方法的成功回调

AngularJS provide success callback of a factory method

本文关键字:成功 回调 方法 工厂 AngularJS      更新时间:2023-09-26

我有一个简单的工厂,在async.请求后返回一个承诺。

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;
}

在我的控制器中,我只调用getupdate -方法并接收承诺。

var updates = factory.getUpdates();

如何提供getuupdates方法的成功/错误功能?

factory.getUpdates().success(function(promise){...}).error(function(err)...

我必须添加什么到我的getuupdates函数?

$http服务已经返回了一个承诺,在这种情况下不需要使用$q.defer()来创建另一个承诺。你可以这样写:

getUpdates: function () {
  return $http.get(...);
}

这样success()error()方法仍然可用。

或者如果你真的有理由使用$q.defer(),请在问题中包含它。

您对then函数处理成功与失败的承诺:

factory.getUpdates()
  .then(function(value) {
    // handle success
  }, function(reason) {
    // handle failure
  });
factory.getUpdates().then(
  //onSucess
  function(response)
  {
    // ...  
  },
  //onError
  function()
  {
    // ...      
  }
);