ibland hamnar en programmerare i en situation där genomförandet av programmet ska avbrytas under en kort tid. För att uppnå detta finns det olika möjligheter i de olika programmeringsspråken. I JavaScript, sedan ES6, finns det möjlighet att använda löften för detta ändamål.
- implementera en sömnfunktion
- utföra en funktion med en fördröjning
implementera en sömnfunktion
för att avbryta några sekunder i JavaScript är det tillräckligt att definiera en liten hjälpfunktion för dig själv. Sleep-funktionen returnerar ett Promise-objekt vars status är inställd på löst i millisekunder efter önskad tid.function Sleep(milliseconds) {
return new Promise(resolve => setTimeout(resolve, milliseconds));
}
om du vill använda den här funktionen nu måste du markera din funktion med async-nyckelordet. Utan async är det inte tillåtet att använda kommandot väntar. En exemplifierande applikation visar följande funktion: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");
}
funktionen anropar sömnfunktionen. Använda vänta, funktionen exekvering stannar för den angivna tiden. Utan väntan skulle funktionen fortsätta att köras eftersom den inte väntar på upplösningen av det Löfteobjekt som returneras av sömn.
utför en funktion med en fördröjning
för att utföra en funktion efter en viss väntetid finns setTimeout-funktionen. Med setTimeout passerar du en så kallad återuppringningsfunktion som ska utföras. Denna funktion utförs efter den angivna tiden. Så definiera dig själv en funktion som ska kallas:function callback() {
console.log("Callback Funktion wird aufgerufen");
}
nu kan du använda setTimeout för att ringa den funktion du just skapade med den angivna fördröjningen. Det bör dock noteras att följande kod körs utan väntetid:
setTimeout(callback, 3000); //Ruft die Callback-Funktion nach 3 Sekunden auf
console.log("Test"); //Wird sofort, ohne Wartezeit ausgeführt
alternativt är det också möjligt att skicka ett funktionsuttryck som ett argument till setTimeout. Så du kan också ringa setTimeout så här:setTimeout(function() {
console.log("Callback Funktion wird aufgerufen");
}, 3000);
fördelen här är att ingen ny funktion behöver definieras och du kan omedelbart se vilket kodblock som körs efter förseningen.