2016-04-13 11 views
1

アプリケーションでhttpリクエストの時間を測定しようとしています。私はこれをグローバルに行う必要があるため、インターセプタを使用したいと思います。インターセプタを使用した各リクエストのHTTP測定時間

私はすべてのリクエストの時間と終了時間を開始しログインすることができます1を作成しました:

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; 
    } 
}; 
}]) 

これは、コンソールに三つの値を記録します。時間と終了時間を開始し、その後、再び、私の要求の開始時間(とき要求が終了する)。
私は複数のリクエストをしているときに問題が始まります(最初の終わりの前に2回目の起動)。その場合、私のstart変数は新しい値で上書きされます。

問題は私のインターセプターが工場なので、シングルトンです(私が間違っていれば私を修正してください)。

各リクエストに実際にかかる時間を簡単に取得できるようにコードを変更することはできますか?
私は各リクエストのキーを保持する配列を作成することを考えていました。終了するとその配列(辞書)から開始時刻を取得できますが、同じリクエストを識別する方法はわかりませんrequestおよびresponse機能。

多分、私がやろうとしていることに対して、より簡単で簡単な解決法がありますか?

答えて

2

関数に渡されたオブジェクトconfigに開始時刻を格納できます。このオブジェクトはresponseインターセプタでresponse.configとして利用可能です。まだused by Angularではない一意のプロパティ名を選択してください。

+0

ありがとうございました。私はあなたの提案を使用してやろうとします:) – Misiu

+0

素晴らしいです。ありがとう! – Misiu

関連する問題