Função sleep em JavaScript: como pausar o teu código

A programação anda depressa e o JavaScript impôs-se como uma das linguagens mais populares e versáteis. Uma das funcionalidades mais procuradas é a possibilidade de pôr o código em pausa ou, como se costuma dizer, de o fazer dormir por instantes.

Função sleep em JavaScript: como pausar o teu código

No mundo trepidante da programação, o JavaScript impôs-se como uma das linguagens mais populares e versáteis. Uma das funcionalidades mais procuradas em JavaScript é a possibilidade de pôr o código em pausa ou, como se costuma dizer, de o «fazer dormir». É aqui que o conceito de «JavaScript sleep» entra em jogo.

javascript
function sleep(ms) {
  return new Promise(resolve => setTimeout(resolve, ms));
}

JavaScript sleep: uma pausa bem merecida no fluxo do teu código

O que é o sleep em JavaScript?

Em poucas palavras, o «sleep em JavaScript» é uma função que permite pausar a execução do código durante um certo tempo. O JavaScript, sendo uma linguagem não bloqueante e assíncrona por natureza, não tem uma função «sleep» nativa como outras linguagens de programação.

Como funciona o sleep em JavaScript?

O «sleep» em JavaScript implementa-se com promessas e com o setTimeout, uma função nativa do JavaScript que permite definir um atraso antes de executar outra função. O «sleep» em JavaScript aparece sobretudo em contextos assíncronos, ao lado das funções async e da palavra-chave await.

Um exemplo prático de sleep em JavaScript

Imagina que estás a construir uma aplicação web e precisas de atrasar uma ação concreta, como mostrar uma mensagem ao utilizador. Podes usar o «sleep em JavaScript» desta forma:

javascript
function sleep(ms) {
  return new Promise(resolve => setTimeout(resolve, ms));
}

async function demo() {
  console.log('Bonjour, utilisateur !');
  await sleep(2000);
  console.log('Comment ça va ?');
}

demo();

Neste exemplo, a função demo mostra primeiro a mensagem « Bonjour, utilisateur ! », espera dois segundos (2000 milissegundos) graças à função sleep e só depois mostra a mensagem « Comment ça va ? ».

A função sleep em JavaScript: para o melhor ou para o pior?

Vantagens do sleep em JavaScript

O «sleep em JavaScript» tem várias vantagens. Desde logo, permite controlar o fluxo do código e atrasar certas ações, o que é útil em muitos casos. Por exemplo, se quiseres mostrar ao utilizador mensagens sucessivas com um intervalo entre cada uma, o «sleep» em JavaScript serve na perfeição.

Inconvenientes do sleep em JavaScript

Dito isto, usar a função «sleep» em JavaScript não é isento de inconvenientes. Como o JavaScript é uma linguagem não bloqueante, recorrer ao «sleep» pode bloquear a execução do resto do código, o que se traduz num pior desempenho e numa experiência de utilizador degradada. Por isso é preciso usar esta função com cabeça.

Perguntas frequentes

Posso usar o sleep em JavaScript dentro de um ciclo?

Sim, podes usar o «sleep» em JavaScript dentro de um ciclo. Mas atenção: isso pode bloquear a execução do resto do código. Em geral, é preferível apoiares-te em funções assíncronas e em promessas para gerir a assincronia dentro de um ciclo.

O sleep em JavaScript é o mesmo que o setTimeout?

Não, o «sleep» em JavaScript e o setTimeout não são exatamente a mesma coisa. O setTimeout é uma função que define um atraso antes de executar outra função, enquanto o «sleep» em JavaScript se implementa normalmente combinando o setTimeout com promessas para pausar a execução do código.

O sleep em JavaScript bloqueia a execução do resto do código?

Sim, o «sleep» em JavaScript pode chegar a bloquear a execução do resto do código, sobretudo se o usares sem cuidado. É por isso que se recomenda combiná-lo com funções assíncronas e promessas.

Existe uma função sleep nativa em JavaScript?

Não, ao contrário de outras linguagens de programação, o JavaScript não tem uma função «sleep» nativa. Podes, ainda assim, criar a tua com promessas e o setTimeout.

O sleep em JavaScript prejudica o desempenho da minha aplicação?

Usar o «sleep» em JavaScript não prejudica necessariamente o desempenho da tua aplicação, mas pode passar a prejudicar se abusares dele e o aplicares sem cuidado. Daí perceberes bem como se usa esta função.

Conclusão

Em resumo, o « JavaScript sleep » é uma ferramenta poderosa para controlar o fluxo do teu código. Mas o seu uso tem de ser bem dominado para não dar em problemas de desempenho. Percebendo como funciona a assincronia em JavaScript e aplicando as técnicas certas, tiras o máximo partido desta função.

No fim de contas, o « JavaScript sleep » , tal como uma boa noite de sono, faz bem quando é usado com critério. Por isso, dedica algum tempo a perceber como funciona e como o integrar nos teus projetos. Vais ver que o teu código passa a correr como num sonho!

JavaScript

Damien Flandrin Programador web desde 2010, criador da Gekkode e do Email Impact. Cada artigo é testado num projeto real antes de ser publicado. Contacto
Newsletter

Os novos testes, tutoriais e projetos, por e-mail.

Testes reproduzíveis, código versionado, resultados datados. Nunca spam.