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.

SetTimeOut dentro de una Promesa de Javascript

Tengo este fragmento de código, básicamente quiero agregar un intervalo entre las llamadas a myfunc para cada elemento en myCol.

         Promise.all(
                _.map(myCol, (o) ->
                  setTimeout =>
                    myfunc(o)
                    10000)
              )

Con la implementación anterior, myfunc se está llamando sin ningún intervalo.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    En el fragmento de código proporcionado, la función setTimeout no se está llamando correctamente. Tanto myfunc(o) como 10000 son parámetros pasados a setTimeout, pero deberían estar separados por una coma en lugar de una flecha =>.

    Para agregar un intervalo entre las llamadas a myfunc para cada elemento en myCol, puedes utilizar la función setInterval en lugar de setTimeout. setInterval toma dos parámetros: la función de retorno de llamada a ejecutar y el intervalo de tiempo (en milisegundos) entre cada llamada a la función.

    Aquí tienes un fragmento de código actualizado que debería lograr el resultado deseado:

    const myInterval = 10000; // intervalo entre cada llamada a myfunc
    let i = 0; // contador para realizar un seguimiento del elemento en myCol que se llamará a continuación
    
    const intervalId = setInterval(() => {
      if (i >= myCol.length) {
        clearInterval(intervalId); // detener el intervalo cuando se hayan procesado todos los elementos
        return;
      }
    
      myFunc(myCol[i]); // llamar a myfunc con el elemento actual en myCol
      i++;
    }, myInterval);
    

    Este código inicia un temporizador de intervalo usando setInterval, que ejecuta repetidamente una función cada myInterval milisegundos. La función primero verifica si se han procesado todos los elementos en myCol y, de ser así, detiene el temporizador de intervalo usando clearInterval. De lo contrario, llama a myFunc con el elemento actual en myCol, incrementa el contador i y espera el siguiente intervalo para ejecutarse nuevamente.

Comments are closed.