i am changing the value of 'aa' after 1 second, but the loop continues to execute.
let aa = true;
setTimeout(function () {
aa = false;
}, 1000);
for (; aa; ) {
console.log('aaa');
}
CodePudding user response:
setTimeout
is asynchronous, so it will execute only after the current code execution of for
loop completed. In your case it will go infinite.
Once for loop started execution, it will stay in the call stack until finished. Since you didn't give any condition there it won't stop
CodePudding user response:
Your approach doesn’t work for reasons explained by others. You can use something like this instead:
var started = Date.now();
while(Date.now() - started < 1000) {
console.log("aaa");
};