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 que em que você está executando a sua rotina sleep.

Deixe uma resposta

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