如何在继续使用 JavaScript 之前添加睡眠/等待函数?
与其他语言不同,JavaScript 没有任何方法来模拟 sleep()函数。有一些方法可以用来模拟睡眠函数。
方法一:使用无限循环不断检查经过的时间
睡眠函数开始的时间首先是使用新的 Date().getTime() 方法找到的。这将返回自 Epoch 时间以来经过的毫秒数。
一个无限的while循环开始了。通过用开始时间减去当前时间来计算经过的时间。 If 语句检查经过的时间是否大于给定时间(以毫秒为单位)。在满足条件时,将执行一个 break 语句,跳出循环。 sleep函数现在结束,在 sleep函数之后编写的代码行现在将执行。
这种使用无限循环的睡眠类型会停止脚本其余部分的处理,并可能导致浏览器发出警告。不建议长时间使用这种类型的睡眠函数。
句法:
function sleep(milliseconds) {
let timeStart = new Date().getTime();
while (true) {
let elapsedTime = new Date().getTime() - timeStart;
if (elapsedTime > milliseconds) {
break;
}
}
}
例子:
JavaScript | sleep/wait before continuing
GeeksforGeeks
JavaScript | sleep/wait before continuing
A sleep of 5000 milliseconds is simulated.
Check the console for the output.
输出:
- 睡觉前:
- 休眠 5000 毫秒后:
方法 2:创建一个新的 Promise 并使用 then() 方法
创建了一个新的 Promise,其中包含一个 setTimeout()函数。 setTimeout()函数用于在指定时间后执行函数。 Promise 的已解决状态在 setTimeout()函数中使用,以在超时后完成它。
then() 方法可用于在 Promise 完成后执行所需的函数。这模拟了函数的等待时间。
此方法不会阻止 JavaScript 的异步特性,是延迟函数的首选方法。由于使用了 Promises,它也仅受 ES6 标准支持。
句法:
const sleep = milliseconds => {
return new Promise(resolve => setTimeout(resolve, milliseconds));
};
sleep(timeToSleep).then(() => {
// code to execute after sleep
});
例子:
JavaScript | sleep/wait before continuing
GeeksforGeeks
JavaScript | sleep/wait before continuing
A sleep of 5000 milliseconds is
simulated. Check the console for the output.
输出:
- 睡觉前:
- 休眠 5000 毫秒后: