2016-04-13 93 views
1

我试图在我的应用程序中测量http请求的时间。因为我这件事应该在全球范围内完成,我想使用拦截器。使用拦截器的每个请求的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识别相同的请求功能。

也许有更容易和更简单的解决方案,我想要做什么?

回答

2

您可以存储传递给request功能config对象的开始时间。该对象在response拦截器中可用作为response.config。请务必选择一个不属于used by Angular的独特属性名称。

+0

感谢您的快速响应。我会尽量使用你的建议:) – Misiu

+0

工程很棒。谢谢! – Misiu