繁体   English   中英

如何在Javascript中编写阻塞同步方法?

[英]How do I write a blocking synchronous method in Javascript?

我试图嘲笑一种方法,这种方法需要很长时间才能用于测试,但是无法在Javascript中找到一种很好的方法。 除了编写一个非常长的for循环之外还有什么好方法

检查时间的循环怎么样?

function sleep(milliSeconds){
    var startTime = new Date().getTime();                    // get the current time
    while (new Date().getTime() < startTime + milliSeconds); // hog cpu until time's up
}

您可以对服务器进行同步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");

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

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

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

console.log(await example());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM