2016-04-13 118 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