我试图模拟出这需要很长的时间用于测试的方法,但不能找到一个好办法在Javascript做到这一点。 除了写一个很长的for循环有什么好办法?
Answer 1:
怎么样一个循环,检查时间 ?
function sleep(milliSeconds){
var startTime = new Date().getTime(); // get the current time
while (new Date().getTime() < startTime + milliSeconds); // hog cpu until time's up
}
Answer 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");
Answer 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());
文章来源: How do I write a blocking synchronous method in Javascript?