我想在 while 循环中重复文本 2 秒。如何在 2 秒后打破循环?
这是我迄今为止尝试过但不起作用的方法:
var repeat = true;
setTimeout(function() { var repeat = false }, 2000)
while(repeat) {
console.log("Let's repeat for 2 seconds...");
}
Run Code Online (Sandbox Code Playgroud)
除了其他答案之外,您可以只检查时间:
const start = +new Date;
while(+new Date < start + 2000) {
console.log("Let's repeat for 2 seconds...");
}
Run Code Online (Sandbox Code Playgroud)
JavaScript 是单线程的。这意味着只要您的循环运行,您的超时就永远不会被触发。
根据您想要什么以及是否要锁定浏览器(通过使用实际的无限循环),您可以将setInterval用作循环,并setTimeout在 2 秒后使用停止间隔。
console.log("Starting loop");
var interval = setInterval(function () {
console.log("Let's repeat for 2 seconds...");
}, 0);
setTimeout(function() {
clearInterval(interval);
console.log("Finished loop");
}, 2000);Run Code Online (Sandbox Code Playgroud)