Sto tentando di eseguire più timer dato un elenco variabile di elementi. Il codice simile a questa:Come utilizzare la funzione setInterval all'interno del ciclo
var list = Array(...);
for(var x in list){
setInterval(function(){
list[x] += 10;
console.log(x + "=>" + list[x] + "\n");
}, 5 * 1000);
}
Il problema con il codice di cui sopra è che l'unico valore in corso di aggiornamento è l'elemento alla fine della lista, moltiplicato per il numero di elementi nella lista.
Qualcuno può offrire una soluzione e qualche spiegazione, quindi so perché si comporta in questo modo?
Sì, potrei consigliare di leggere questo articolo: http://blog.morrisjohns.com/javascript_closures_for_dummies. Inoltre, setTimeout all'interno di un ciclo potrebbe non essere ciò che vuole fare in quanto tutte le richiamate verranno attivate nello stesso momento, non verranno sfalsate. – SoWeLie
L'OP non ha "bisogno di una chiusura", al contrario - ha una chiusura a * x * che deve essere evitata (cosa che la tua risposta effettivamente fa). Mantiene comunque la chiusura in * elenco *. – RobG