如何在 Node Js 中执行 active sleep/timeout?

Ho do I perform an active sleep/timeout in Nodejs?

我知道Javascript是单线程的,阻塞事件循环不是正确的方法。但我想知道是否有一种方法可以执行类似 sleep(5000ms) 模拟 需要很长时间才能执行的代码。

我需要这个用于调试目的。

我不确定这是你真正想要的,但我在测试中使用这个库来让测试认为时间已经过去,当你用计时器测试代码时它非常有用。

我用的是这样的:

//before the test
var clock = lolex.install();

//make the code think a second had passed
clock.tick(1000);

//after the test
clock.uninstall();

https://github.com/sinonjs/lolex

您可以使用 while 循环来模拟睡眠,如下所示,

它将阻塞事件循环大约 5s

function sleep(interval) {
    let d = new Date().getTime();
    while (true) {
        let d1 = new Date().getTime();
        if (d1 - d >= interval) {
            return;
        }
    }
}
sleep(5000);
console.log('after interval');

简短,您可以使用 while 循环来检查时间流逝。

function stopForN(ms){
    var sts = Date.now();

    while((Date.now() - sts) < ms){}console.log('finished');
}
stopForN(1000);