我正在尝试模拟一个需要很长时间才能进行测试但却无法在Javascript中找到一个好方法的方法。除了编写一个非常长的for循环之外,还有什么好方法吗?
答案 0 :(得分:8)
function sleep(milliSeconds){
var startTime = new Date().getTime(); // get the current time
while (new Date().getTime() < startTime + milliSeconds); // hog cpu until time's up
}
答案 1 :(得分:3)
您可以对服务器进行同步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");
答案 2 :(得分:2)
如果你可以使用更新的await / await语法:
function sleep (time) {
return new Promise((resolve) => setTimeout(resolve, time));
}
async function example() {
await sleep(4000);
return 1;
}
console.log(await example());