es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo esperar a que termine el bucle recursivo y mostrar el mensaje?

Estoy ejecutando una función recursiva con setTimeout, lo que he notado es que JavaScript pasa directamente a través de la función wait() y no espera a que termine. Se ejecuta directamente y deja que el método wait() funcione por sí solo.

wait(100, 30);

function wait(time, limit) {
    console.log('valor >> ' + limit);
    if (limit < 0) return 'éxito';
    setTimeout(function () {
        wait(time, --limit);
    }, time);
}

console.log('hola');

Ten en cuenta que mi mensaje “hola” está al principio al ejecutar el script, porque pasó directamente sin esperar el ciclo recursivo. Mi mensaje “hola” debería estar al final.

¿Alguien puede ayudarme a dejar el mensaje “hola” al final después de ejecutar todo el ciclo?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para asegurarse de que el mensaje “hi” se imprima al final después de ejecutar el bucle recursivo con setTimeout, debes modificar tu código de la siguiente manera:

    function wait(time, limit) {
        console.log('valor >> ' + limit);
        if (limit < 0) {
            console.log('éxito');
            return;
        }
        setTimeout(function () {
            wait(time, --limit);
            if (limit === 0) console.log('hi');
        }, time);
    }
    
    wait(100, 30);
    

    En este código modificado, el mensaje “hi” solo se imprime cuando el límite alcanza 0, lo que significa que el bucle recursivo ha terminado de ejecutarse. Esto se logra con la condición adicional if (limit === 0) console.log('hi') dentro de la función setTimeout. Al hacer esto, el mensaje “hi” se imprimirá al final de la salida después de que el bucle haya terminado.

Comments are closed.