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 回答
3

如果您可以使用较新的 await/await 语法:

function sleep (time) {
  return new Promise((resolve) => setTimeout(resolve, time));
}

async function example() {
    await sleep(4000);
    return 1;
}

console.log(await example());
于 2018-03-30T17:48:04.400 回答
2

您可以对服务器进行同步 AJAX 调用,从而根据脚本的请求将响应延迟一定的时间。但是请注意,此方法在 Firefox 中不起作用,因为它不支持同步 AJAX 调用。

只需在客户端使用这个简单的功能:

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 回答