我有一个$http
请求由成功和错误函数处理,在这两种情况下我都想对响应做些什么:
$http(params)
.then(success, error);
var success = function(response) {
// do stuff
foo(response);
}
var error = function(response) {
// do other stuff
foo(response);
}
我不想在两个处理程序中重复代码,我想我可能会使用finally
来解决这个问题,但似乎finally
函数没有收到任何参数。
我是否一直在foo(response)
和success
函数中调用error
?或者,还有更好的方法? (请说有更好的方法......)
答案 0 :(得分:3)
您可以做的是将失败转化为成功:
$http(params)
.then(success, error)
.then(foo);
var success = function(response) {
// do stuff
return response;
}
var error = function(response) {
// do other stuff
return response;
}
答案 1 :(得分:2)
finally
回调。 The manual合理地解释了这一点:
finally(callback,notifyCallback) - 允许你观察任何一个 履行或拒绝承诺,但不做修改就这样做 最终值。
此行为符合其他承诺实施(特别是Q
,这是$q
)的灵感。
结果处理的模式可能是
$http(...)
.catch(function (err) {
// condition err response
return err;
})
.then(function (result) {
// ...
});
这与finally
不同,因为此链会导致履行承诺(除非拒绝发生在then
),而finally
不会影响链状态(除非拒绝发生在finally
)。