我正在尝试在我的应用程序中测量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
函数。
也许我正在尝试做更简单,更简单的解决方案?
答案 0 :(得分:3)
您可以将开始时间存储在传递给config
函数的request
对象上。此对象在response
拦截器中以response.config
的形式提供。请务必选择一个尚未used by Angular的唯一属性名称。