A volte un programmatore si trova in una situazione in cui l’esecuzione del programma deve essere interrotta per un breve periodo. Per fare questo, ci sono varie possibilità nei diversi linguaggi di programmazione. In JavaScript, da ES6, c’è la possibilità di utilizzare le Promesse per questo scopo.
- Implementazione di una funzione sleep
- Esecuzione di una funzione con un ritardo
Implementazione di una funzione sleep
Per sospendere alcuni secondi in JavaScript, è sufficiente definire una piccola funzione ausiliaria per te. La funzione Sleep restituisce un oggetto Promise il cui stato è impostato su risolto in millisecondi dopo il tempo desiderato.function Sleep(milliseconds) {
return new Promise(resolve => setTimeout(resolve, milliseconds));
}
Se si desidera utilizzare questa funzionalità ora, è necessario contrassegnare la funzione con la parola chiave async. Senza async, non è consentito utilizzare il comando await. Un’applicazione esemplare mostra la seguente funzione: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");
}
La funzione chiama la funzione sleep. Utilizzando await, l’esecuzione della funzione si arresta per il tempo specificato. Senza await, la funzione continuerebbe a funzionare perché non attende la risoluzione dell’oggetto Promise restituito da Sleep.
Esegui una funzione con un ritardo
Per eseguire una funzione dopo un certo tempo di attesa, esiste la funzione setTimeout. Con setTimeout si passa una cosiddetta funzione di callback da eseguire. Questa funzione viene eseguita dopo il tempo specificato. Quindi definisci te stesso una funzione da chiamare:function callback() {
console.log("Callback Funktion wird aufgerufen");
}
Ora puoi usare setTimeout per chiamare la funzione appena creata con il ritardo specificato. Tuttavia, va notato che il seguente codice viene eseguito senza tempo di attesa:setTimeout(callback, 3000); //Ruft die Callback-Funktion nach 3 Sekunden auf
console.log("Test"); //Wird sofort, ohne Wartezeit ausgeführt
In alternativa, è anche possibile passare un’espressione di funzione come argomento a setTimeout. Quindi puoi anche chiamare setTimeout in questo modo:setTimeout(function() {
console.log("Callback Funktion wird aufgerufen");
}, 3000);
Il vantaggio qui è che nessuna nuova funzione deve essere definita e si può immediatamente vedere quale blocco di codice viene eseguito dopo il ritardo.