1

これがあるとしましょう:

function myMethod1() {
    ...
}

そして後でコードで:

myMethod1();
alert('myMethod1() was executed!');

myMethod1()の実行後に呼び出されるように、アラートのタイムアウトを設定する必要があります。しかし、setTimeout関数の2番目のパラメーターの値をどのように知ることができますか?myMethod1()の実行に必要な時間を測定するにはどうすればよいですか?

MyMethod1()には非同期ajax呼び出しがあります。

4

3 に答える 3

3

メソッドが非同期タスクを実行する場合、次のようなコールバック関数を渡すのが一般的です。

function myMethod(cb)
{
    // some code, such as $.ajax
    $.ajax({
         url: 'example.com',
         complete: function() {
             // we're done, notify callback
             cb();
         }
    });
}

次に、cb実行時に次のように渡されます。

myMethod(function() {
    alert('method is done');
});
alert('method returned, but is still doing stuff in the background');

これが非同期設計の信条です。バックグラウンドでタスクを実行するすべてのメソッドには、コールバック関数にその完了を通知する何らかの方法があります。


ただし、メソッドが同期している場合はcb()、関数本体の最後で呼び出すことができますが、持っていたものを維持する方がはるかに簡単です。

myMethod();
alert('method is done');
于 2012-10-19T07:29:41.070 に答える
1

あなたはする必要はありません。あなたがそれを設定した方法で、は終了alertに常に発砲します。 myMethod1()

于 2012-10-19T07:26:59.727 に答える
0

タイムスタンプを使用でき、ミリ秒単位で正確になります。

2つの変数が必要です。1つは開始時刻を保持し、もう1つは終了時間を保持します。そして、計算したい場所にそれらの変数を設定します。それで

///以下のバージョンを編集してグローバルにします。

これをあなたのjsコードの一番上に置いてください:

var ts_start;
var ts_stop;

時間の計算を開始したい場所にこれを置きます:

ts_start =new Date().getTime(); 

時間の計算を停止したい場所にこれを置きます:

ts_stop =new Date().getTime(); 

そして、それらの間に差分を作成することで、ミレセカンドに警告することができます。

alert(ts_stop-ts_start);

またはそれを変数に押し込みます...

于 2012-10-19T07:33:37.967 に答える