9

テストのために長い時間がかかるメソッドをモックアウトしようとしていますが、Javascript でこれを行う良い方法が見つかりません。非常に長い for ループを書く以外に、何か良い方法はありますか?

4

3 に答える 3

12

時間をチェックするループはどうですか?

function sleep(milliSeconds){
    var startTime = new Date().getTime();                    // get the current time
    while (new Date().getTime() < startTime + milliSeconds); // hog cpu until time's up
}
于 2012-05-10T04:38:44.753 に答える
2

スクリプトで要求された一定時間だけ応答を遅らせるサーバーへの同期 AJAX 呼び出しを行うことができます。ただし、同期 AJAX 呼び出しをサポートしていないため、このメソッドは Firefox では機能しないことに注意してください。

クライアント側でこの単純な関数を使用するだけです:

function sleep(microseconds) {
    var request = new XMLHttpRequest;
    request.open("GET", "/sleep.php?time=" + milliseconds);
    request.send();
}

sleep.phpサーバー側のコード:

usleep(intval($_GET("sleep")));

次のように、JavaScript (Firefox を除く) でブロッキング同期関数を作成できるようになりました。

alert("Hello");
sleep(1000000); // sleep for 1 second
alert("World");
于 2012-05-10T04:35:40.507 に答える