En Node.js, no existe una función nativa de sleep
como en otros lenguajes de programación. Sin embargo, podemos crear nuestra propia función de sleep
utilizando promesas para retrasar la ejecución del código durante un tiempo específico. Esta técnica es especialmente útil en operaciones asíncronas o cuando es necesario simular retardos en pruebas o tareas programadas.
El siguiente código muestra cómo implementar una función de sleep
en Node.js:
function sleep(ms) {
return new Promise((resolve) => setTimeout(resolve, ms));
}
1. Función sleep(ms)
: La función recibe un argumento ms
, que representa la cantidad de milisegundos que deseas pausar la ejecución del código.
2. Promesa: La función devuelve una promesa, lo que permite que sleep
se utilice de manera asíncrona. Al devolver una promesa, podemos utilizar la función await
en contextos asíncronos.
3. setTimeout
: Dentro de la promesa, se utiliza setTimeout
para retrasar la resolución de la promesa por el número de milisegundos especificado. Una vez que el temporizador finaliza, la promesa se resuelve y la ejecución del código continúa.
Esta implementación es útil para situaciones en las que necesitas retrasar la ejecución sin bloquear el hilo de eventos principal, lo que es crucial para mantener la eficiencia y la capacidad de respuesta en aplicaciones Node.js.
A continuación, se presentan algunos ejemplos de cómo utilizar la función sleep
en un contexto asíncrono:
async function ejemplo() {
console.log('Inicio');
await sleep(2000); // Pausa la ejecución por 2 segundos
console.log('2 segundos después');
}
ejemplo();
async function procesarDatos() {
for (let i = 0; i < 5; i++) {
console.log(`Procesando dato ${i}`);
await sleep(1000); // Pausa 1 segundo entre cada iteración
}
}
procesarDatos();
async function pruebaRetardo() {
console.log('Prueba iniciada');
await sleep(3000); // Simula un retardo de 3 segundos
console.log('Prueba finalizada después de 3 segundos');
}
pruebaRetardo();
Para más información sobre las promesas y el método setTimeout
, puedes consultar la documentación oficial de Node.js:
Jorge García
Fullstack developer