只能为AngularJS $ http promises分配一个错误/成功函数吗?

时间:2013-08-11 22:52:54

标签: javascript angularjs promise

我正在尝试执行以下操作:

$http.get('..').error(someFunc).error(someFunc2);

然而,它似乎没有起作用,我得到了各种错误。

我认为以这种方式链接多种方法是可能的吗?我做错了什么?

3 个答案:

答案 0 :(得分:3)

如果你这样做:

$http.get('..').error(someFunc).error(someFunc2);
如果someFunc抛出错误,

someFunc2将 触发。这与Jonathan Lonowski指出的代码片段一致:https://github.com/angular/angular.js/blob/v1.1.5/src/ng/http.js#L714-L719

如果您想要运行多种功能,您可以这样做:

$http.get('..').error(function () {someFunc();someFunc2();});

答案 1 :(得分:1)

使用promise chaining更优雅的方式。 仅供错误处理:

$q.all($http.get('..')).catch(function(errorReason) {...}).catch(function(errorReason) {...})

成功/错误处理:

$q.all($http.get('..')).then(function(response) {...}, function(errorReason) {...}).then(function(response) {...}, function(errorReason) {...})

答案 2 :(得分:0)

  

然而,它似乎没有起作用

是的,确实有效。但请注意,error方法有效,因此您的代码段相当于

var promise = $http.get('..');
promise.error(someFunc);
promise.error(someFunc2);

如果您期望链接行为,someFunc2仅捕获someFunc中引发的错误,请使用.catch()方法而不是.error()