2016-09-09 8 views
0

応答を収集して変数に設定するために、いくつかのサービスコールの所要時間を調べます。例えば、そのような呼び出しに:サービスコールが応答を収集するのにかかる時間

response = svc.call.someService()

私はそうのような日付の呼び出しで囲むことができます:

var start = new Date.getTime(); 
response = svc.call.someService(); 
var end = new Date.getTime(); 
var time = end - start; 

しかし、私は私のコードとなり全体にいくつかのサービスコールでこれを行う必要があります何とか私のためにこれを行うことができますが、応答変数をそのまま維持する機能を作りたいと思っています。サービス自体も変更できません。エレガントな方法でサービスコールにかかる時間を収集するアイデアですか?

+0

「サービスコール」とは、XMLHttpRequestを意味すると思いますか? – dman2306

+0

これは専有のサービスコールです。 XMLHttpRequestではありません。それがあれば、私はイベントリスナーまたは私が信じるものを追加することができるだろうが、私はこれがここに当てはまるとは思わない。 – Eric

+0

タイミングコードを含むサービスコールルーチン用のラッパー関数を作成します。https://developer.mozilla.org/en-US/docs/Web/API/Performance – Xotic750

答えて

1

あなたが提案してきたまさに行いラッパー関数を作成し、ちょうどパラメータとしてそれをサーバーコールの参照を渡し、このような....

function timeServiceCall(serviceCall) { 
    var start = new Date.getTime(); 
    var response = serviceCall(); 
    var end = new Date.getTime(); 
    console.log("time taken = " + end - start); 
    return response; 
} 

次に、あなただけのサービスを呼び出すことができます

var response = timeServiceCall(svc.call.someService); 
+0

ニース!私はJavascriptを初めて使うので、コールバックを忘れてしまった。うまくいくはずのアイデアをありがとう。 – Eric

+0

心配することはありません - 喜んで助けてください:) – Archer

+0

ちなみに、私はこれを見てお勧めしたい... https://developer.mozilla.org/en-US/docs/Web/API/Console/timeそれは素晴らしいですパフォーマンスの問題のデバッグに役立ちます。 – Archer

1

がそうのように、ラッパー関数を作る...そうのように呼び出す:

function time (callback) { 
    var start = new Date().getTime(); 
    var result = callback.call(); 
    return [result, new Date().getTime() - start]; 
} 

を次にsのように使用o:

var called = time(svc.call.someService); 
var result = called[0]; 
var timeTaken = called[1]; 
関連する問題