我正在尝试执行以下操作:
$http.get('..').error(someFunc).error(someFunc2);
但是它似乎不起作用,我收到各种错误。
我认为可以以这种方式链接多种方法?我究竟做错了什么?
我正在尝试执行以下操作:
$http.get('..').error(someFunc).error(someFunc2);
但是它似乎不起作用,我收到各种错误。
我认为可以以这种方式链接多种方法?我究竟做错了什么?
如果你这样做:
$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();});
使用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) {...})
但是它似乎不起作用
是的,它确实有效。但请注意,该error
方法有效,因此您的代码段相当于
var promise = $http.get('..');
promise.error(someFunc);
promise.error(someFunc2);
如果您期望链接行为,其中someFunc2
仅捕获抛出的错误someFunc
,请使用该.catch()
方法而不是.error()
.