我在这个问题上花了很多时间,最后我可以在 jsfiddle 中用一个易于阅读的代码来展示它:http://jsfiddle.net/Lb0g25ae/
function test(i) {
return function() {
console.log(i);
//I need to increase valid here because this is where the script will choose wheter to increase or not (continue looping) valid depending on some conditions
}
}
var valid = 0;
while (valid < 5) {
setTimeout(test(valid), 1000*valid);
valid++;
}
我需要它
function test(i) {
return function() {
console.log(i);
valid++;
}
}
var valid = 0;
while (valid < 5) {
setTimeout(test(valid), 1000*valid);
}
但是这样循环不会停止,因为valid没有增加,这会产生无限循环和崩溃。有人可以指出我正确的方向吗?
最佳答案
Valid 不会增加,因为 while 循环会不停地进行并立即使 cpu 过载。
超时后需要调用test。检查:
var valid = 0;
function test() {
console.log(valid);
valid++;
if(valid < 5){
setTimeout(test, 1000*valid);
}
}
test();
关于javascript - While 循环,增加变量在 settimeout 函数内部没有影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25571805/