我正在尝试执行以下操作:
$http.get('..').error(someFunc).error(someFunc2);
然而,它似乎没有起作用,我得到了各种错误。
我认为以这种方式链接多种方法是可能的吗?我做错了什么?
答案 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()
。