Estoy tratando de ejecutar múltiples temporizadores dada una lista variable de elementos. El código es como la siguiente:Cómo utilizar la función setInterval dentro del ciclo for
var list = Array(...);
for(var x in list){
setInterval(function(){
list[x] += 10;
console.log(x + "=>" + list[x] + "\n");
}, 5 * 1000);
}
El problema con el código anterior es que el único valor que se actualiza es el elemento al final de la lista, multiplicado por el número de elementos de la lista.
¿Alguien puede ofrecer una solución y una explicación así que sé por qué se está comportando de esta manera?
Sí, podría recomendar leer este artículo: http://blog.morrisjohns.com/javascript_closures_for_dummies. Además de eso, setTimeout dentro de un bucle puede no ser lo que él quiere hacer de todos modos, ya que todas las devoluciones de llamadas se dispararán al mismo tiempo, no se escalonarán. – SoWeLie
El OP no "necesita un cierre", sino todo lo contrario: tiene un cierre a * x * que debe evitarse (lo que realmente hace su respuesta). Sin embargo, mantiene el cierre a * list *. – RobG