2

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

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

但是它似乎不起作用,我收到各种错误。

我认为可以以这种方式链接多种方法?我究竟做错了什么?

4

3 回答 3

3

如果你这样做:

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

someFunc2只有在 someFunc 抛出错误时才会触发。这与 Jonathan Lonowski 指出的代码片段一致:https ://github.com/angular/angular.js/blob/v1.1.5/src/ng/http.js#L714-L719

如果要运行多个功能,可以执行以下操作:

$http.get('..').error(function () {someFunc();someFunc2();});
于 2013-08-12T08:34:01.010 回答
1

使用Promise 链接的更优雅的方式。仅用于错误处理:

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

对于成功/错误处理:

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

于 2015-05-07T12:12:14.283 回答
0

但是它似乎不起作用

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

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

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

于 2015-05-07T13:54:31.517 回答