às vezes um programador entra em uma situação em que a execução do programa deve ser interrompida por um curto período de tempo. Para isso, existem várias possibilidades nas diferentes linguagens de programação. Em JavaScript, desde ES6, existe a opção de usar promessas para este propósito.
- Implementação de uma função de suspensão
- Execução de uma função com um atraso
Implementação de uma função de suspensão
suspender alguns segundos em JavaScript, é o suficiente para definir uma pequena função auxiliar para si mesmo. A função Sleep retorna um objeto de Promessa cujo status é definido para ser resolvido em milisegundos após o tempo desejado.function Sleep(milliseconds) {
return new Promise(resolve => setTimeout(resolve, milliseconds));
}
se você quiser usar esta funcionalidade agora, você tem que marcar sua função com a palavra-chave async. Sem async, não é permitido usar o comando de espera. Um exemplar aplicação apresenta a seguinte função:async function test() {
console.log("Vor der sleep-Funktion");
await Sleep(3000); // Pausiert die Funktion für 3 Sekunden
console.log("Nach der Sleep Funktion");
}
a função chama A função de suspensão. Usando aguardar, a execução da função pára pelo tempo especificado. Sem esperar, a função continuaria a funcionar porque não espera pela Resolução do objeto prometido devolvido pelo sono.
Execute uma função com um atraso
para executar uma função após um certo tempo de espera, existe a função setTimeout. Com o setTimeout, você passa por uma chamada função de callback a ser executada. Esta função é realizada após o tempo especificado. Então define-te uma função a ser chamada:function callback() {
console.log("Callback Funktion wird aufgerufen");
}
Agora você pode usar setTimeout para chamar a função que você acabou de criar com o atraso especificado. No entanto, deve-se notar que o seguinte código é executado sem tempo de espera:setTimeout(callback, 3000); //Ruft die Callback-Funktion nach 3 Sekunden auf
console.log("Test"); //Wird sofort, ohne Wartezeit ausgeführt
alternativamente, também é possível passar uma expressão de função como um argumento para setTimeout. Então você também pode chamar setTimeout como este:setTimeout(function() {
console.log("Callback Funktion wird aufgerufen");
}, 3000);
A vantagem aqui é que nenhuma nova função tem que ser definida e você pode ver imediatamente qual bloco de código é executado após o atraso.