joskus ohjelmoija joutuu tilanteeseen, jossa ohjelman suorittaminen pitäisi keskeyttää lyhyeksi ajaksi. Tämän saavuttamiseksi eri ohjelmointikielissä on erilaisia mahdollisuuksia. Javascriptissä, koska ES6, on mahdollisuus käyttää lupauksia tähän tarkoitukseen.
- Unifunktion toteuttaminen
- Funktion toteuttaminen viiveellä
Unifunktion toteuttaminen
muutaman sekunnin keskeyttäminen Javascriptissä riittää pienen aputoiminnon määrittelemiseen itse. Unifunktio palauttaa Lupausobjektin, jonka tila ratkaistaan millisekunneissa halutun ajan jälkeen.function Sleep(milliseconds) {
return new Promise(resolve => setTimeout(resolve, milliseconds));
}
jos haluat käyttää tätä toimintoa nyt, sinun täytyy merkitä toiminto Async avainsanalla. Ilman asynciä se ei saa käyttää odota-komentoa. Esimerkillinen sovellus osoittaa seuraavan toiminnon: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");
}
funktio kutsuu unifunktiota. Käyttämällä odota, toiminnon suoritus pysähtyy määritetyksi ajaksi. Ilman odottamista funktio jatkaisi toimintaansa, koska se ei odota unen palauttaman Lupausobjektin resoluutiota.
Suorita funktio viiveellä
tietyn odotusajan jälkeen on olemassa setTimeout-funktio. Settimeoutin avulla ohitat suoritettavan ns. callback-toiminnon. Tämä toiminto suoritetaan määritetyn ajan jälkeen. Määrittele siis itsellesi funktio, jota kutsutaan:function callback() {
console.log("Callback Funktion wird aufgerufen");
}
nyt voit käyttää setTimeout soittaa toiminnon juuri luotu määritetyllä viiveellä. On kuitenkin huomattava, että seuraava koodi suoritetaan ilman odotusaikaa:setTimeout(callback, 3000); //Ruft die Callback-Funktion nach 3 Sekunden auf
console.log("Test"); //Wird sofort, ohne Wartezeit ausgeführt
vaihtoehtoisesti on myös mahdollista siirtää funktion lauseke argumenttina settimeoutille. Joten voit myös soittaa setTimeout näin:setTimeout(function() {
console.log("Callback Funktion wird aufgerufen");
}, 3000);
etuna tässä on, että mitään uutta toimintoa ei tarvitse määritellä ja voit heti nähdä, mikä koodilohko suoritetaan viiveen jälkeen.