Saltar al contenido

¿Cuál es el equivalente de Thread.sleep() de Java en JavaScript?

Esta cuestión se puede abordar de diversas maneras, por lo tanto te mostramos la que en nuestra opinión es la respuesta más completa.

Solución:

La respuesta simple es que no existe tal función.

Lo más parecido que tienes es:

var millisecondsToWait = 500;
setTimeout(function() 
    // Whatever you want to do after the wait
, millisecondsToWait);

Tenga en cuenta que usted especialmente no desea esperar ocupado (por ejemplo, en un ciclo de giro), ya que es casi seguro que su navegador está ejecutando su JavaScript en un entorno de subproceso único.

Aquí hay un par de otras preguntas de SO que se ocupan de los subprocesos en JavaScript:

  • JavaScript y subprocesos
  • ¿Por qué JavaScript no es compatible con subprocesos múltiples?

Y esta pregunta también puede ser útil:

  • setTimeout – cómo evitar el uso string para devolución de llamada?

Prueba con este código. Espero que sea útil para usted.

function sleep(seconds) 

  var e = new Date().getTime() + (seconds * 1000);
  while (new Date().getTime() <= e) 

Suponiendo que pueda usar ECMAScript 2017, puede emular un comportamiento similar usando async/await y setTimeout. Aquí hay un ejemplo de función de suspensión:

async function sleep(msec) 
    return new Promise(resolve => setTimeout(resolve, msec));

Luego puede usar la función de suspensión en cualquier otra función asíncrona como esta:

async function testSleep() 
    console.log("Waiting for 1 second...");
    await sleep(1000);
    console.log("Waiting done."); // Called 1 second after the first console.log

Esto es bueno porque evita la necesidad de una devolución de llamada. La desventaja es que solo se puede usar en funciones asíncronas. Detrás de escena, la función testSleep se detiene y, una vez que se completa la suspensión, se reanuda.

Desde MDN:

La expresión await hace que la ejecución de la función asíncrona se detenga hasta que se cumpla o rechace una Promesa, y que reanude la ejecución de la función asíncrona después del cumplimiento.

Para una explicación completa ver:

  • https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function
  • https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/await

Reseñas y puntuaciones

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *