【发布时间】:2017-07-21 23:09:53
【问题描述】:
在我目前的情况下,我正在使用 $http 拦截器来捕获响应错误并显示一条简单的消息,让用户知道出现了问题。 但是现在我想对来自加载页面期间发送的请求或由于用户本身的操作(例如按下按钮,输入字段......)而发送的请求的错误进行区分。
我想要的 $httpInterceptor 示例:
return {
responseError: function (response) {
// IF THE REQUEST IS FROM A PAGE LOAD
// DO SOMETHING
// IF THE REQUEST IS NOT FROM A PAGE LOAD
// DO SOMETHING ELSE
return $q.reject(response);
}
};
为了更清楚一点:
案例 1:用户正在等待页面加载:
- 请求 1 已发送
- 请求 2 已发送
- 发送请求 3
- REQ 4 在 REQ 3 响应后发送
- REQ 5 在 REQ 4 响应后发送
- REQ 4 在 REQ 3 响应后发送
- 发送请求 6
- REQ 7 在 REQ 6 响应后发送
以上所有请求都是页面加载的一部分,如果其中一个返回错误,它应该有特定的行为。
不是因为页面加载而触发的请求:
案例 2:用户按下按钮:
- 发送请求 1
- REQ 2 在 REQ 1 响应后发送
这些请求不是页面加载的一部分,如果出现错误,应该采取不同的行动。
有什么办法可以在这两种情况下有所不同吗? 由于我的项目很大,我不想更改每个 $http 请求的代码来识别它是否来自页面加载,所以这不是我的解决方案。
【问题讨论】:
-
定义页面加载的含义,(部分 html 和其他资产?)。如果我理解你想在模板加载和失败时用一些装饰消息来捕捉异常,而其他的时候来自某种 api 我对吗?
标签: javascript angularjs ajax angular-http-interceptors