簡體   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