我的 Js 代码需要一个睡眠函数。我可以使用基于承诺的函数,但这需要
await
关键字才能工作。但问题是我需要在顶层使用睡眠功能。
function sleep(milliseconds) {
return new Promise(resolve => setTimeout(resolve, milliseconds));
}
await sleep(5) //invalid
所以写不出来
await sleep(5)
因为Js不支持。
如何实现一个类似的功能,
let i = 10;
while (i > 0) {
console.log("sleeping..." + i);
sleep(1);
i--;
}
console.log("Hello");
sleep(5);
console.log("World");
有什么办法吗?
虽然这很疯狂并且不推荐,但是是的,你可以使用
Date.now()
函数来实现。
function sleep(seconds) {
const start = Date.now();
while (Date.now() - start < seconds * 1000) {}
}
此功能使用您定义的时间将当前时间与开始时间进行比较。 我们知道
while loop
这样会阻塞主线程,直到释放线程后才会执行下一行。
希望有帮助。