Esta pregunta está relacionada con SetTimeout, me confunde y necesito poder prometerlo, ya que estoy tratando de comprender los conceptos básicos de setTimeout.
Cuando llamo a setTimeout como se muestra a continuación (directamente desde afuera), se ejecuta solo una vez y esto es claro para mí, ya que es lo que dice la definición de setTimeout
Una función que se ejecutará después de que expire el temporizador.
let i = 0; let str = "Alim"; function type() { console.log(str, str.length, i); } type(); // runs immediately setTimeout(type, 3000); // runs after 3 secsPero cuando lo llamo desde dentro de una función (o como dicen algunos, lo llamo desde dentro de sí mismo), entonces se ejecuta en un bucle cada 3 segundos... pero ¿por qué y cómo? No puedo entender esto y probar cosas más complejas sin comprender los conceptos básicos podría no ser una buena idea para mí.
¿Por qué setTimeout se ejecuta una y otra vez en el siguiente código cuando en realidad se llama solo una vez desde el exterior al escribir type() ?
let i = 0; let str = "Alim"; function type() { console.log(str, str.length, i); // runs immediately setTimeout(type, 3000); // runs after 3 secs and again and again and again.....!!! } type();