Delay/Sleep Nativo em Funções Assíncronas no JavaScript
Criar uma pausa programada na execução de código assíncrono é uma necessidade comum para evitar chamadas de API em excesso (rate limiting) ou gerenciar transições no front-end. A abordagem moderna utiliza uma Promise combinada com o setTimeout, permitindo pausar a execução sem bloquear a event loop do Node.js ou do navegador.
JavaScript
// Função auxiliar reutilizável para criar o delay
const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
// Exemplo de uso prático dentro de uma função async
async function executarComPausa() {
console.log('Iniciando tarefa...');
// Aguarda 2000 milissegundos (2 segundos) antes de prosseguir
await sleep(2000);
console.log('Executado após 2 segundos de pausa!');
}
executarComPausa();
- Uso de Promises: A função
sleepretorna umaPromiseque é resolvida automaticamente após o tempo estipulado nosetTimeout. - Não Bloqueante: Por utilizar
async/await, a pausa é não-bloqueante; a thread principal fica livre para processar outros eventos durante o tempo de espera. - Sintaxe em Milissegundos: O parâmetro passado para a função representa o tempo de espera em milissegundos (ex:
1000= 1 segundo). - Tratamento de Erros: Caso precise cancelar o delay antes do tempo terminar, é necessário evoluir a implementação utilizando
AbortController.
