如何在 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();
您可以使用 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);
我知道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();
您可以使用 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);