Diego Martínez
Pregunta¿Por qué al colocar la función setTimeOut no se suma el tiempo en cada iteración del ciclo For? Me explico: yo probé cambiando el tiempo por 1000 milisegundos y el tiempo que tardó en imprimir los número fue de 1 segundo y yo pensaba que tardaría 10 segundos.

Ramdhei López Arcila
El tiempo no aumenta cada que itera el ciclo, es un valor estático.

Fernando Alejandro Yerena Ramos
Hay formas de conseguir el resultado que esperas. Una de ellas es multiplicar el tiempo por "i". De esa forma el tiempo de espera cambia en cada iteración del
for
function printNumbers(params) { for (var i = 0; i < 10; i++) { function eventuallyPrintNumbers(n) { setTimeout(() => { console.log(n) }, 1000 * i); } eventuallyPrintNumbers(i) } } printNumbers()
Tambien se pueden encadenar promesas con el método .then, o usar funciones asíncronas con async/await. Al final, en todos los casos debemos indicarle a JS como queremos que se comporte al trabajar con asincronía, pero todo lo que mencioné se ve en clases mas adelante.
Espero haberme explicado de forma clara y te haya sido de ayuda. Cualquier cosa aquí andamos. 🍍🍍🍍

Fernando Alejandro Yerena Ramos
Hola, @ludmartinez. Una disculpa, no había comprendido la pregunta.
Lo que sucede se debe a la forma en que JavaScript trabaja la asincronía. Cuando JS entra al
for
En la schedule task el setTimeout() esperará el tiempo que le indicamos para ejecutar el callback que pasamos de parametro. Como a todos los setTimeout() le indicaste que tardarán un segundo, todos se mostrarán una vez pase ese segundo.
Diego Martínez
Creo que no me dí a entender: En cada iteración del ciclo For se ejecuta la función SetTimeOut con un tiempo de 1000 ms (Por ejemplo). Lo que yo creí es que en cada iteración iba a esperar 1 segundo para imprimir cada valor, pero no sucede eso, sino que luego de 1 segundo imprime todos los valores. El resultado que yo esperaba es que para que imprimiera todos los valores iba a tardar 10 segundos por cada segundo de iteración. Pero el resultado obtenido fue que se imprimen todos los valores luego de 1 segundo

Fernando Alejandro Yerena Ramos
Hola @ludmartinez, un 1 segundo = 1000 milisegundos. Para que se ejecute después de 10 segundos tendrías que poner 10000. 😊