soms komt een programmeur in een situatie waarin de uitvoering van het programma voor een korte tijd moet worden onderbroken. Hiervoor zijn er verschillende mogelijkheden in de verschillende programmeertalen. In JavaScript, sinds ES6, is er de optie om Beloften te gebruiken voor dit doel.
- een slaapfunctie implementeren
- een functie uitvoeren met een vertraging
een slaapfunctie implementeren
om enkele seconden in JavaScript te onderbreken, volstaat het om een kleine hulpfunctie voor uzelf te definiëren. De functie Sleep geeft een Promise-object terug waarvan de status is ingesteld op opgelost in milliseconden na de gewenste tijd.function Sleep(milliseconds) {
return new Promise(resolve => setTimeout(resolve, milliseconds));
}
als je deze functionaliteit nu wilt gebruiken, moet je je functie markeren met het Async sleutelwoord. Zonder async is het niet toegestaan om het wacht commando te gebruiken. Een voorbeeldige toepassing toont de volgende functie: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");
}
de functie noemt de slaapfunctie. Met behulp van wait, de uitvoering van de functie stopt voor de opgegeven tijd. Zonder wachten, zou de functie blijven lopen omdat het niet wacht op de resolutie van het Promise-object dat door slaap wordt teruggegeven.
een functie uitvoeren met een vertraging
om een functie na een bepaalde wachttijd uit te voeren, is er de setTimeout-functie. Met setTimeout passeer je een zogenaamde callback functie die uitgevoerd moet worden. Deze functie wordt uitgevoerd na de opgegeven tijd. Dus definieer jezelf een functie om genoemd te worden:function callback() {
console.log("Callback Funktion wird aufgerufen");
}
nu kunt u setTimeout gebruiken om de functie te bellen die u zojuist hebt gemaakt met de opgegeven vertraging. Er moet echter worden opgemerkt dat de volgende code wordt uitgevoerd zonder wachttijd:
setTimeout(callback, 3000); //Ruft die Callback-Funktion nach 3 Sekunden auf
console.log("Test"); //Wird sofort, ohne Wartezeit ausgeführt
alternatief is het ook mogelijk om een functie-expressie als argument door te geven aan setTimeout. Dus je kunt setTimeout ook zo bellen:setTimeout(function() {
console.log("Callback Funktion wird aufgerufen");
}, 3000);
het voordeel hiervan is dat er geen nieuwe functie hoeft te worden gedefinieerd en u direct kunt zien welk codeblok na de vertraging wordt uitgevoerd.