Javascript HTTP使用拦截器测量每个请求的时间
我试图在我的应用程序中测量http请求的时间。因为我认为这应该在全球范围内完成,所以我想使用拦截器 我创建了一个可以记录每个请求的开始时间和结束时间的日志:Javascript HTTP使用拦截器测量每个请求的时间,javascript,angularjs,Javascript,Angularjs,我试图在我的应用程序中测量http请求的时间。因为我认为这应该在全球范围内完成,所以我想使用拦截器 我创建了一个可以记录每个请求的开始时间和结束时间的日志: app.factory('httpTimeInterceptor', [function() { var start; return { request: function(config) { start = new Date(); console.log("START",start); return con
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
变量将被新值覆盖
问题是我的拦截器是工厂,所以它是一个单例(请纠正我,如果我错了)
我是否可以修改代码以轻松获取每个请求所花费的实际时间?我正在考虑创建一个数组,该数组将为每个请求保存密钥,当它结束时,我将能够从该数组(字典)中获取开始时间,但我不知道如何在
请求
和响应
函数中识别相同的请求
也许有更简单更简单的方法来解决我的问题?您可以将开始时间存储在传递给
请求
函数的配置
对象上。此对象在响应
拦截器中作为response.config
提供。请确保选择一个唯一的尚未命名的属性名称。感谢您的快速响应。我会尝试使用你的建议:)效果很好。谢谢