Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS提供工厂方法的成功回调_Javascript_Angularjs_Ionic Framework - Fatal编程技术网

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()
  {
    // ...      
  }
);