HTTP使用拦截器测量每个请求的时间
HTTP measure time of each request using interceptor
我正在尝试测量应用程序中http请求的时间。因为我认为这应该在全球范围内完成,所以我想使用拦截器。
我创建了一个可以记录每个请求的开始时间和结束时间的
app.factory('httpTimeInterceptor', [function() {
var start;
return {
request: function(config) {
start = new Date();
console.log("START",start);
return config;
},
response: function(response) {
console.log("START",start);
var date = new Date();
console.log("END",date);
return response;
}
};
}])
这将三个值记录到控制台:我的请求的开始时间,然后再次记录开始时间和结束时间(当请求结束时)
当我处理多个请求时,我的问题就开始了(第二个请求在第一个请求结束之前开始)。在这种情况下,我的start
变量将被新值覆盖。
问题是我的拦截器是工厂的,所以它是单例的(如果我错了,请纠正我)。
我可以修改我的代码以方便地获得每个请求所花费的实际时间吗
我想创建一个数组,为每个请求保存密钥,当它结束时,我可以从该数组(字典)中获得开始时间,但我不知道如何在request
和response
函数中识别相同的请求。
也许有一个更简单的解决方案来解决我想要做的事情?
您可以存储传递给request
函数的config
对象的开始时间。此对象在response
拦截器中可用作response.config
。请确保选择Angular尚未使用的唯一特性名称。
相关文章:
- 如何设置$.ajax请求的超时,并在超时时间过长时进行重做
- HTTP使用拦截器测量每个请求的时间
- 取消请求动画设置时间后的帧
- 使用 Javascript 跟踪长时间和失败的请求
- 我可以/如何显式终止长时间运行的 xhr 请求
- 为什么此 Google 日历 API 请求不返回开始时间等事件数据
- 使用您的 http 请求逐步自动路由有时间滞后
- 为什么将 ng-select 替换为自定义指令会导致$http请求不会每隔一段时间发送一次
- AJAX 可访问的长时间运行的服务任务阻止在启用 ASP.NET 兼容性/会话的环境中的后续 AJAX 服务请求
- 如何限制每个自定义时间的 AJAX 请求
- 时间 ajax 请求
- 有没有一种方法可以在没有服务器端语言的情况下完成http头请求并获得时间
- AngularJS:只有经过一段时间后,才显示ajax请求的加载微调器
- 此请求动画帧填充是否也会产生时间戳
- 如何通过与Jquery中的时间进行比较来创建ajax请求
- 长时间运行的AJAX请求在几分钟后重新提交
- 在一系列小的时间范围内处理来自同一客户端的多个请求
- 如何设置ajax请求开始到成功之间的最短时间
- 如何将一些指定的时间设置为ajax调用,这样如果请求正在花费时间检索数据,它应该来到FAIL块
- 显示HTTP请求时间