![](/img/trans.png)
[英]Why is this javascript if statement/for-loop syntactically incorrect?
[英]JavaScript For-Loop alter loop statement in closure
我有這樣一個for循環:
for (var i = 0, ii = 10; i < ii; i++) {
var timer = setTimeout(function(i,timer) {
return function() {
clearTimeout(timer);
if (condition) ii++;
}
}(i,timer), 1000);
}
我想做的是增加for循環在該for循環中延遲關閉內執行的次數。
問題在於,當執行10個定時器功能之一時,循環已經完成。 (我認為這是問題所在)
我想知道如何在這樣的timeout
函數中更改ii
,而不必再次調用整個for循環。 (該過程必須保持一個循環)
您將無法完全按照自己的意願進行操作,因為傳遞給setTimeout
任何函數都不會執行,直到當前函數完成為止。 例如,如果您嘗試:
setTimeout(function() {
console.log('Hello!');
}, 100);
while (true) { }
您永遠不會看到'Hello!'
因為當前功能將永遠無法完成。 相反,您可以考慮創建一個函數,使其對給定ii
變量的東西起作用。
function doStuff(ii) {
// Do some stuff given ii
if (condition) {
setTimeout(function() {
doStuff(ii + 1);
}, 1000);
}
}
for (var i = 0; i < 10; i++) {
doStuff(i);
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.