试图 运行 一个循环恰好一秒钟,但循环 运行 是无限的。为什么?
Trying to run a loop for exactly one second, but the loop runs infinitely. why?
我在 1 秒后更改 'aa' 的值,但循环继续执行。
let aa = true;
setTimeout(function () {
aa = false;
}, 1000);
for (; aa; ) {
console.log('aaa');
}
setTimeout
是asynchronous,所以只有在for
循环当前代码执行完成后才会执行。在你的情况下,它会变得无限。
一旦for循环开始执行,它将留在调用堆栈中直到完成。因为你没有给出任何条件所以它不会停止
由于其他人解释的原因,您的方法不起作用。您可以改用这样的东西:
var started = Date.now();
while(Date.now() - started < 1000) {
console.log("aaa");
};
我在 1 秒后更改 'aa' 的值,但循环继续执行。
let aa = true;
setTimeout(function () {
aa = false;
}, 1000);
for (; aa; ) {
console.log('aaa');
}
setTimeout
是asynchronous,所以只有在for
循环当前代码执行完成后才会执行。在你的情况下,它会变得无限。
一旦for循环开始执行,它将留在调用堆栈中直到完成。因为你没有给出任何条件所以它不会停止
由于其他人解释的原因,您的方法不起作用。您可以改用这样的东西:
var started = Date.now();
while(Date.now() - started < 1000) {
console.log("aaa");
};