我知道Javascript是单线程的,阻塞事件循环不是正确的方法。但是我想知道是否有一种方法可以执行类似public function sendMessage(Request $request, $conversationId)
{
$request->merge(['conversation_id' => $conversationId]);
return $this->conversationService->sendMessage(Auth::user(), $request->all());
}
的操作来模拟需要很长时间才能执行的代码。
出于调试目的,我需要这样做。
答案 0 :(得分:0)
您可以使用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');
答案 1 :(得分:0)
简洁明了,您可以使用while循环来检查时间的流逝。
function stopForN(ms){
var sts = Date.now();
while((Date.now() - sts) < ms){}console.log('finished');
}
stopForN(1000);
答案 2 :(得分:-1)
我不确定这不是您真正想要的,但是我在测试中使用该库来使测试认为时间已经过去,这在使用计时器测试代码时非常有用。
我使用这样的东西:
//before the test
var clock = lolex.install();
//make the code think a second had passed
clock.tick(1000);
//after the test
clock.uninstall();