Dies ist eine bekannte issue. Wenn Sie wie dieser Wert von i
Änderungen durchlaufen, bevor die Zeitüberschreitungsfunktion ausgeführt wird, müssen Sie den Wert i
für jede Ausführung kopieren.
Die einfachste Lösung, es zu einem separaten Verfahren passieren ist, etwa so:
for(i=0;i<10;i++){
addToDocument(i);
}
function addToDocument(i){
setTimeout(function(){
document.write(i);
},(i*1000));
}
Das Problem mit Javascript, im Gegensatz zu Java ist, dass es nicht i
als endgültig innerhalb Clusure nicht behandeln, das ist, warum Sie brauchen um den Wert zu kopieren.
Suche über ** Verschlüsse ** –
Und Event-Loops sowie – WitVault