如何从 finally 块访问 $http 响应
How to access $http response from the finally block
我有一个 $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
函数没有接收任何参数。
我是否一直在从 success
和 error
函数中调用 foo(response)
?或者,还有更好的方法? (请说有更好的方法...)
你能做的就是化失败为成功:
$http(params)
.then(success, error)
.then(foo);
var success = function(response) {
// do stuff
return response;
}
var error = function(response) {
// do other stuff
return response;
}
finally
回调被调用 no arguments. The manual 合理地解释了这一点:
finally(callback, notifyCallback) – allows you to observe either the
fulfillment or rejection of a promise, but to do so without modifying
the final value.
此行为符合其他承诺实现(特别是 Q
,这是 $q
的灵感来源)。
结果处理的模式可能是
$http(...)
.catch(function (err) {
// condition err response
return err;
})
.then(function (result) {
// ...
});
这与 finally
不同,因为此链会导致 fulfilled promise(除非拒绝发生在 then
),而 finally
不会影响链状态(除非拒绝发生在 finally
)。
我有一个 $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
函数没有接收任何参数。
我是否一直在从 success
和 error
函数中调用 foo(response)
?或者,还有更好的方法? (请说有更好的方法...)
你能做的就是化失败为成功:
$http(params)
.then(success, error)
.then(foo);
var success = function(response) {
// do stuff
return response;
}
var error = function(response) {
// do other stuff
return response;
}
finally
回调被调用 no arguments. The manual 合理地解释了这一点:
finally(callback, notifyCallback) – allows you to observe either the fulfillment or rejection of a promise, but to do so without modifying the final value.
此行为符合其他承诺实现(特别是 Q
,这是 $q
的灵感来源)。
结果处理的模式可能是
$http(...)
.catch(function (err) {
// condition err response
return err;
})
.then(function (result) {
// ...
});
这与 finally
不同,因为此链会导致 fulfilled promise(除非拒绝发生在 then
),而 finally
不会影响链状态(除非拒绝发生在 finally
)。