我花了很多的這個時候對這個問題裏面沒有效果,最後我可以給它一個容易的jsfiddle閱讀代碼:http://jsfiddle.net/Lb0g25ae/While循環,增加變量具有setimeout功能
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);
}
但這樣的循環不會停止,因爲有效的不被增加,這將產生一個無限循環和崩潰。有人可以指出我正確的方向?
另外,如果您需要返回一個值,因爲它看起來像您可能正在嘗試執行的操作,請嘗試使用回調樣式,因爲此答案解釋了一下:http://stackoverflow.com/a/7142064/1981678 – briansol 2014-08-29 16:03:15
你真的做了我的一天!現在我想了解這些代碼的工作原理。這是一個遞歸函數嗎?非常感謝你的幫助,你解決了一個非常大的問題:) – 2014-08-29 16:07:58
是的,它執行自己,所以它是遞歸的。 – gorpacrate 2014-09-01 07:10:52