繁体   English   中英

使用拦截器的每个请求的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变量将被新值覆盖。

问题是我的拦截器是出厂的,所以是单例的(如果我错了,请纠正我)。

我可以修改代码以轻松获取每个请求的实际时间吗?
我正在考虑创建一个将为每个请求保留键的数组,当它结束时,我将能够从该数组(字典)中获取开始时间,但是我不知道如何在requestresponse函数中标识相同的请求。

也许对我正在尝试的事情有更简单的解决方案?

您可以将开始时间存储在传递给request函数的config对象上。 该对象在response拦截器中作为response.config可用。 确保选择Angular尚未使用的唯一属性名称。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM