Sleep function em JavaScript1 min de leitura

Categoria: JavaScript Node.js

Fala meus nobres devs! Quando você pensa em parar a execução de uma rotina você pensa, normalmente, em algum método que faça com que o processador “pause” a execução da rotina. Em JavaScript, até o momento, não temos uma rotina nativa para disponibilizar esse recurso, porém podemos usar algumas estratégias para termos algo muito parecido com uma função sleep, como é outras linguagens.

JavaScript Vanilla (JS puro)

Se você está usando o Vanilla JS, em algum site, por exemplo, você pode criar sua funcão sleep da seguinte forma:

// função sleep
const sleep = (milliseconds) => {
  return new Promise(resolve => setTimeout(resolve, milliseconds))
}

// chamando a função sleep com pausa de 2 segundos
const rotina_com_pausa = async () => {
  await sleep(2000)
  console.log('Pausa de 2 segundos')
}

rotina_com_pausa()

Com esta simples rotina acima usando a function setTimeout você consegue criar sua função sleep 🙂

Node.js: fica muito mais fácil

Em Node.js você pode usar o recurso de promisify para retornar uma promise do método setTimout de forma transparente e com isso o mesmo código acima, passa a ser:

const { promisify } = require('util')

// função sleep
const sleep = promisify(setTimeout)

// chamando a função sleep com pausa de 2 segundos
const rotina_com_pausa = async () => {
  await sleep(2000)
  console.log('Pausa de 2 segundos')
}

rotina_com_pausa()

Importante!

Está rotina não irá parar a execução do seu sistema JavaScript! Ela irá parar apenas a function em que você está executando a sua rotina sleep.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *

Esse site utiliza o Akismet para reduzir spam. Aprenda como seus dados de comentários são processados.