JavaScript: Sleep and setTimeout

Às vezes, como programador, você se encontra numa situação em que precisa interromper a execução do seu programa por um curto período de tempo. Para gerir isto, existem várias possibilidades nas diferentes linguagens de programação. No JavaScript, desde ES6, existe a opção de usar Promises para este fim.

<

  • Implement a sleep function
  • Executar uma função com atraso

Implement a sleep function

Para suspender alguns segundos no JavaScript, basta definir uma pequena função auxiliar para si mesmo. A função dormir retorna um objeto prometido cujo estado é definido para resolvido após o tempo desejado em milissegundos.
>br>função Dormir(milissegundos) {
retorna novo Promise(resolve => setTimeout(resolve, milissegundos));
>>>br>>br>>br> Se você agora quiser usar esta funcionalidade, você tem que marcar sua função com a palavra-chave async-. Sem async não é permitido usar o comando await. Um exemplo de uso é mostrado na seguinte função:
>br> teste da funçãoasync() {
console.log(“Before sleep function”);
aguarda Sleep(3000); // Pausa a função por 3 segundos
console.log(“After sleep function”);
>br>>br>>br> A função chama a função Sleep. Usando await stop a execução da função durante o tempo especificado. Sem ser forte>ait a função continuaria a executar porque não há espera pela resolução do objeto prometido retornado por dormir.

Executar uma função com atraso

Executar uma função após um tempo de espera especificado, há a função setTimeout. Com setTimeout passa-se uma função chamada de callback para ser executada. Esta função é executada após o tempo especificado. Então defina uma função a ser chamada:
br>br>function callback() {
console.log(“A função callback é chamada”);
}
br>br>br>br> agora você pode usar setTimeout para chamar a função que você acabou de criar com o atraso especificado. Note, no entanto, que o seguinte código será executado sem esperar:
>br>setTimeout(callback, 3000); //Chamada a função callback após 3 segundos
console.log(“Test”); //W Será executado imediatamente, sem esperar
br>br>Alternativamente, também é possível passar uma expressão função como argumento para setTimeout. Então você também pode chamar setTimeout como segue:
>br>setTimeout(function() {
console.log(“A função de retorno é chamada”);
}, 3000);
>br>>br> A vantagem aqui é que nenhuma nova função precisa ser definida e você pode ver imediatamente qual bloco de código será executado após o atraso.