Internet JavaScript: Sleep and setTimeout

néha egy programozó olyan helyzetbe kerül, hogy a program végrehajtását rövid időre meg kell szakítani. Ennek megvalósításához különféle lehetőségek vannak a különböző programozási nyelvekben. A JavaScriptben az ES6 óta lehetőség van az ígéretek használatára erre a célra.

  • alvó funkció végrehajtása
  • késleltetett funkció végrehajtása

alvó funkció végrehajtása

néhány másodperc felfüggesztéséhez a JavaScript-ben elegendő egy kis kiegészítő funkció meghatározása. A Sleep függvény egy olyan Ígéretobjektumot ad vissza, amelynek állapota a kívánt idő után ezredmásodpercben van feloldva.
function Sleep(milliseconds) {
return new Promise(resolve => setTimeout(resolve, milliseconds));
}
ha most szeretné használni ezt a funkciót, meg kell jelölnie a funkcióját az aszinkron kulcsszóval. Aszinkron nélkül nem engedélyezett a várakozás parancs használata. Egy példaértékű alkalmazás a következő funkciót mutatja:
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 funkció az alvás funkciót hívja. A várakozás használatával a funkció végrehajtása a megadott időre leáll. Várakozás nélkül a funkció továbbra is fut, mert nem várja meg az alvás által visszaadott ígéret objektum felbontását.

funkció végrehajtása késleltetéssel

egy funkció végrehajtásához egy bizonyos várakozási idő után van a setTimeout funkció. A setTimeout akkor adja át az úgynevezett visszahívási funkciót kell végrehajtani. Ezt a funkciót a megadott idő után hajtják végre. Tehát határozza meg magának egy függvényt, amelyet meg kell hívni:
function callback() {
console.log("Callback Funktion wird aufgerufen");
}

most a setTimeout segítségével hívhatja meg az imént létrehozott funkciót a megadott késleltetéssel. Meg kell azonban jegyezni, hogy a következő kódot várakozási idő nélkül hajtják végre:
setTimeout(callback, 3000); //Ruft die Callback-Funktion nach 3 Sekunden auf
console.log("Test"); //Wird sofort, ohne Wartezeit ausgeführt

Alternatív megoldásként egy függvénykifejezést argumentumként is átadhatunk a setTimeout-nak. Tehát a setTimeout-ot is így hívhatja:
setTimeout(function() {
console.log("Callback Funktion wird aufgerufen");
}, 3000);
ennek az az előnye, hogy nem kell új függvényt definiálni, és azonnal látható, hogy a késleltetés után melyik kódblokk kerül végrehajtásra.

visszajelzés a tippről visszajelzés
visszajelzés a tippről visszajelzés

Vélemény, hozzászólás?

Az e-mail-címet nem tesszük közzé.

More: