Javascript är frihetens språk men är samtidigt ett funktionsorienterat språk. Till skillnad från andra språk har javascript inte en inbyggd sömn () -funktion. Du kan antingen bygga en anpassad sleep () -funktion med den inbyggda setTimeout () -funktionen, eller så lovar det senaste ECMAScript en async-await-funktion. Den här artikeln visar hur du kan stoppa eller pausa körningen av sömnfunktionen under önskad tid med löften eller asynk-väntande funktioner.
Innan du startar
Innan du börjar bygga en sömnfunktion måste du förstå att funktionen setTimeout () inte fungerar om du förväntar dig att den ska stoppa körningen. Många programmerare och utvecklare försöker använda funktionen med loopar men misslyckas eftersom setTimeout () -funktionen används för att vänta en viss tid och kör sedan den givna funktionen. Du kan dock använda setTimeout () -funktionen för att bygga en sömnfunktion med löfte om ditt syfte är att stoppa körningen under önskad tid.
Använda sömnfunktionen
Så vi kommer att göra en anpassad sömnfunktion där funktionen får tid i millisekunder som ett argument och returnerar ett löfte. Löftet kommer att innehålla en setTimeout () -funktion, som skickar resolver som en funktion och tid i millisekunder till setTimeout () -funktionen. Så till slut bör sömnfunktionen se ut så här:
funktion sömn (ms)returnera nytt Promise (resolver => setTimeout (resolver, ms));
;
Och nu, var du än vill använda den här sömnfunktionen, kan du enkelt använda den.
Nu kommer vi att använda denna sömnfunktion i ett par exempel för att visa dig hur du använder den i praktiken.
Först ska vi försöka trösta lite text och ringa sömnfunktionen. Eftersom sömnfunktionen ger tillbaka ett löfte lägger vi en dåfunktion efter den, där vi kommer att trösta lite text och skicka argumentet '5000' till sömnfunktionen. När du har kört programmet ser du i konsolen att den kommer att sova i 5 sekunder.
trösta.logg ("Viloläge väntar i 10 sekunder och sedan kommer den att skriva ut" Klar "");sova (5000).sedan (() =>
trösta.log ("Klar");
)
Du kan bevittna fördröjningen på 5 sekunder för att komma till "Klar" status i konsolen.
Antag att vi vill utföra en animering varannan sekund. För att göra det kommer vi helt enkelt att skriva en asynkron animeringsfunktion, där vi animerar något, stoppar körningen i 2 sekunder med viloläge och upprepar sedan processen med en for-loop i 10 gånger.
animering av asynkfunktion (ms)trösta.log ("börjar ...");
för (låt i = 0; i < 10; i++)
trösta.logg ("animation efter 2 sekunder ...")
väntar på sömn (ms)
trösta.log ("Detta är slutet.");
Efter att ha skrivit den asynkrona animationsfunktionen kan vi nu ringa animeringsfunktionen.
animation (2000);När du har kört koden ser du i konsolen att texten ”animation efter 2 sekunder” upprepas varannan sekund.
Slutsats
Den här artikeln visade dig hur du gör en anpassad sömnfunktion, tillsammans med flera demonstrationer. Jag hoppas att den här artikeln har hjälpt dig att bättre förstå användningen av sömnfunktion. Du kan lära dig mer om Javascript på linuxhint.com.