Javascript 的顶级睡眠函数

问题描述 投票:0回答:1

我的 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");

有什么办法吗?

javascript sleep
1个回答
0
投票

虽然这很疯狂并且不推荐,但是是的,你可以使用

Date.now()
函数来实现。

function sleep(seconds) {
    const start = Date.now();
    while (Date.now() - start < seconds * 1000) {}
}

此功能使用您定义的时间将当前时间与开始时间进行比较。 我们知道

while loop
这样会阻塞主线程,直到释放线程后才会执行下一行。

希望有帮助。

© www.soinside.com 2019 - 2024. All rights reserved.