petlja događaja u čvoru js

Petlja Dogadaja U Cvoru Js



Node.js moćan je Javascript okvir koji korisnicima omogućuje pokretanje Javascript koda na poslužitelju izvan preglednika. To je runtime okruženje koje ne blokira događaje za izgradnju pouzdanih skalabilnih web aplikacija. Petlja događaja važan je dio Node.js koji vam omogućuje izvršavanje zadataka bez čekanja da jedan završi prije pokretanja drugog.

Iako je Javascript jezik s jednom niti, Node.js može dodijeliti zadatke operativnom sustavu, dopuštajući mu da obrađuje više zadataka u isto vrijeme. Nekoliko zadataka mora biti dovršeno u isto vrijeme jer su operacije u operacijskom sustavu višenitne. Povratni poziv povezan sa svakom operacijom dodaje se u red događaja i Node.js ga planira pokrenuti kada se navedeni zadatak završi.

Da bi napisao učinkovit i pouzdan Node.js kod, korisnik mora dobro razumjeti petlje događaja. Također može pomoći u učinkovitom rješavanju problema s performansama. Petlja događaja u Node.js štedi memoriju i omogućuje vam da radite više stvari odjednom, a da ne morate čekati da svaka završi. Izraz 'asinkroni' odnosi se na bilo koju Javascript funkciju koja radi u pozadini bez blokiranja dolaznih zahtjeva.







Prije nego što prijeđemo izravno na petlje događaja, pogledajmo različite aspekte programskog jezika Javascript.



Javascript kao asinkroni programski jezik

Pogledajmo koncepte asinkronog programiranja. Javascript se koristi u web, mobilnim i stolnim aplikacijama, ali treba napomenuti da je Javascript sinkroni računalni programski jezik s jednom niti.



Za razumijevanje koncepta dan je jednostavan primjer koda.





metoda funkcije1 ( ) {

konzola. log ( 'Funkcija 1' )

}

metoda funkcije2 ( ) {

konzola. log ( 'Funkcija 2' )

}

metoda1 ( )

metoda2 ( )

U ovom se kodu stvaraju dvije jednostavne funkcije i prva se poziva metoda1 kako bi se prvo zabilježila metoda1, a zatim prešla na sljedeću.

Izlaz



Javascript kao sinkroni programski jezik

Javascript je sinkroni programski jezik i izvršava svaki redak korak po korak krećući se od vrha prema dolje sa samo jednim redom koji se izvršava u isto vrijeme. U gore navedenom primjeru koda method1 se prvo bilježi u terminal, a zatim method2.

Javascript kao blokirajući jezik

Budući da je sinkroni jezik, javascript ima funkciju blokiranja. Nije važno koliko je vremena potrebno za dovršetak procesa koji je u tijeku, ali novi proces neće biti pokrenut dok se prethodni ne dovrši. U gornjem primjeru koda pretpostavimo da postoji mnogo skripte koda u metodi1, bez obzira na to koliko vremena je potrebno, 10 sekundi ili minutu, metoda2 se neće izvršiti dok se ne izvrši sav kod u metodi1.

Korisnici su to možda iskusili tijekom pregledavanja. Kada se web-aplikacija izvršava u pregledniku u pozadini, izvršava se ogroman dio koda pa se čini da je preglednik neko vrijeme zamrznut prije nego što korisniku vrati pristup kontroli. Ovo ponašanje je poznato kao blokiranje. Preglednik ne može prihvatiti daljnje dolazne zahtjeve dok se trenutačni zahtjev ne obradi.

Javascript je jezik s jednom niti

Za pokretanje programa u javascriptu koristi se funkcija niti. Niti mogu obavljati samo jedan zadatak odjednom. Ostali programski jezici podržavaju višenitnost i mogu izvoditi više zadataka paralelno, javascript sadrži samo jednu nit za izvršavanje bilo koje skripte koda.

Čekanje u Javascriptu

Kao što je vidljivo iz naziva u ovom odjeljku, moramo pričekati da se naš zahtjev obradi da bismo nastavili dalje. Čekanje može trajati nekoliko minuta tijekom kojih se ne razmatraju daljnji zahtjevi. Ako skripta koda nastavi bez čekanja, kod će naići na pogrešku. Neke funkcionalnosti treba implementirati u Javascript ili točnije Node.js kako bi kod bio asinkroni.

Sada kada smo razumjeli različite aspekte Javascripta, razumijmo sinkroni i asinkroni na nekoliko jednostavnih primjera.

Sinkrono izvođenje koda u Javascriptu

Sinkroni znači da se kod izvršava sekvencijalno ili jednostavnije korak po korak počevši od vrha i pomičući se niz liniju po liniju.

U nastavku je dan primjer koji može pomoći u razumijevanju:

// aplikacija.js

konzola. log ( 'Jedan' )

konzola. log ( 'Dva' )

konzola. log ( 'Tri' )

U ovom kodu postoje tri naredbe console.log, svaka ispisuje nešto. Prvo se prva izjava koja će ispisati 'One' u konzoli šalje u pozivni stog na 1 ms (procijenjeno), a zatim se prijavljuje na terminal. Nakon toga, drugi izraz se gura u pozivni stog i sada je vrijeme 2 ms s jednim dodanim iz prethodnog, a zatim zapisuje 'Dva' na konzolu. Konačno, posljednja izjava se gura u pozivni stog za sada vrijeme je 3ms i bilježi 'Tri' u konzoli.

Gornji kod se može izvršiti pozivanjem sljedeće naredbe:

primjena čvora. js

Izlaz

Funkcioniranje je gore detaljno objašnjeno i imajući to u vidu, izlaz se upisuje u konzolu u tren oka:

Asinkrono izvođenje koda u Javascriptu

Sada preradimo isti kod uvođenjem povratnih poziva i čineći kod asinkronim. Gornji kôd može se preurediti kao:

// aplikacija.js
funkcija printOne ( uzvratiti poziv ) {
setTimeout ( funkcija ( ) {
konzola. log ( 'Jedan' ) ;
uzvratiti poziv ( ) ;
} , 1000 ) ;
}
funkcija printTwo ( uzvratiti poziv ) {
setTimeout ( funkcija ( ) {
konzola. log ( 'Dva' ) ;
uzvratiti poziv ( ) ;
} , 2000. godine ) ;
}
funkcija printThree ( ) {
setTimeout ( funkcija ( ) {
konzola. log ( 'Tri' ) ;
} , 3000 ) ;
}
konzola. log ( 'Početak programa' ) ;
printOne ( funkcija ( ) {
ispisDva ( funkcija ( ) {
ispisTri ( ) ;
} ) ;
} ) ;
konzola. log ( 'Kraj programa' ) ;

U ovom kodu iznad:

  • Tri funkcije deklarirane su za ispis 'One', 'Two' i 'Three', svaka funkcija ima parametar povratnog poziva koji omogućuje sekvencijalno izvršavanje koda.
  • Vremensko ograničenje se postavlja pomoću funkcije setTimeout i postoji naredba console.log za ispis nakon određene odgode.
  • Ispisuju se dvije poruke 'Početak programa' i 'Kraj programa' koje označavaju početak i kraj programa.
  • Program počinje ispisom “Start of the Program” nakon čega se izvršava funkcija printOne s odgodom od 1 sekunde, zatim se funkcija printTwo izvršava s odgodom od 2 sekunde i na kraju se izvršava funkcija printThree s odgodom od 3 sekunde. odgoditi.
  • Program ne čeka izvršavanje asinkronog koda unutar funkcija setTimeouts koje bilježe naredbu 'Kraj programa' prije ispisa One, Two i Three.

Izlaz

Pokrenite gornji kod izvršavanjem ove naredbe u terminalu:

primjena čvora. js

Sada bi se izlaz u terminalu prikazao asinkrono kao:

Sada kada potpuno razumijemo sinkrono i asinkrono izvršenje, skočimo kako bismo učvrstili naš koncept petlje događaja u Node.js.

Node.js: Mehanizam petlje događaja

Izvršenjem sinkronih i asinkronih zadataka upravlja petlja događaja u Node.js. Izvršenje se pokreće čim se projekt Node.js pokrene i glatko prenosi složene zadatke u sustav. Ovo osigurava da se drugi zadaci mogu glatko izvoditi na glavnoj niti.

Vizualno objašnjenje petlje događaja u Node.js

Petlja događaja je kontinuirana i polubeskonačna u Node.js. Petlja događaja se poziva početkom skripte koda Node.js, a odgovorna je za upućivanje asinkronih API poziva i pozivanje procesa. Tick(), a tajmeri za zakazivanje zatim nastavljaju izvršavanje petlje događaja.

U Node.js, pet glavnih tipova redova rukuje povratnim pozivima:

  • 'Timer Queue' obično poznat kao min-heap odgovoran je za rukovanje povratnim pozivima povezanim s 'setTimeout' i 'setInterval'.
  • Povratne pozive za asinkrone operacije kao što su 'fs' i ​​'http' moduli obrađuju 'I/O Queue'.
  • 'Check Queue' sadrži povratne pozive za 'setImmediate' funkciju koja je jedinstvena za Node.
  • 'Zatvori red čekanja' upravlja povratnim pozivima povezanim s događajem zatvaranja bilo kojeg asinkronog zadatka.
  • Na kraju, postoje dva različita reda čekanja u redu čekanja 'Micro Task':
    • Red 'nextTick' sadrži povratne pozive povezane s funkcijom 'process.nextTick'.
    • Red 'Promise' kontrolira povratne pozive koji se odnose na izvorni Promise.

Funkcionalnost Petlje događaja u Node.js

Petlja događaja funkcionira pod posebnim zahtjevima koji kontroliraju redoslijed izvršenja povratnog poziva. Sinkroni Javascript kod korisnika ima prednost na početku procesa, tako da petlja događaja počinje tek kada se izbriše stog poziva. Sljedeći slijed izvršavanja slijedi strukturirani obrazac:

Najveći prioritet se daje povratnim pozivima u redu čekanja mikrozadataka, a zatim se kreću za izvršavanje zadataka u redu čekanja nextTick nakon čega slijede zadaci u redu čekanja obećanja. Zatim se rukuje procesima u povratnim pozivima reda čekanja vremena nakon čega se red čekanja mikrozadataka ponovno posjećuje nakon svakog povratnog poziva mjerača vremena. Povratni pozivi u redovima čekanja za ulaz/izlaz, provjeru i zatvaranje zatim se izvršavaju u sličnom obrascu s redom čekanja mikrozadataka koji se posjećuje nakon svake faze.

Petlja se nastavlja izvršavati ako ima više povratnih poziva za obradu. Kada skripta koda završi ili nema povratnih poziva za obradu, petlja događaja završava učinkovito.

Sada kada dobro razumijemo petlju događaja, pogledajmo njene značajke.

Značajke petlje događaja u Node.js

Glavne karakteristike su:

  • Petlja događaja je beskonačna petlja i nastavlja izvršavati zadatke čim ih primi i prelazi u stanje mirovanja u slučaju da nema zadataka, ali počinje funkcionirati čim zadatak primi.
  • Zadaci u redu događaja izvršavaju se samo kada je stog prazan, što znači da nema aktivne operacije.
  • Povratni pozivi i obećanja mogu se koristiti u petlji događaja.
  • Budući da petlja događaja slijedi načelo reda apstraktnog tipa podataka, ona ispunjava prvi zadatak, a zatim prelazi na sljedeći.

Nakon temeljitog razumijevanja petlje događaja i logike asinkronih i sinkronih izvođenja, razumijevanje različitih faza može učvrstiti koncepte petlje događaja.

Node.js Faze petlje događaja

Kao što je gore spomenuto, petlja događaja je polu-beskonačna. Ima mnogo faza, ali neke se faze koriste za unutarnje rukovanje. Ove faze nemaju nikakav učinak na skriptu koda.

Petlja događaja prati funkcionalnost Queuea i izvršava zadatak po principu prvi ušao i prvi izašao. Zakazanim mjeračima vremena upravljat će operativni sustav dok ne isteknu. Istekli mjerači vremena tada se dodaju u red povratnih poziva za mjerače vremena.

Petlja događaja izvršava zadatke u redu čekanja mjerača vremena jedan po jedan sve dok više ne preostane nijedan zadatak ili dok ne dosegne najveći dopušteni broj zadataka. U odjeljcima ispod objašnjene su osnovne faze petlji događaja.

Faza mjerača vremena

U Node.js postoji API tajmera koji može zakazati funkcije koje će se izvršiti u budućnosti. Nakon što je dodijeljeno vrijeme prošlo, povratni poziv timera će se izvršiti čim se može zakazati; međutim, može doći do kašnjenja ili s kraja operativnog sustava ili zbog izvršavanja drugih povratnih poziva.

API tajmera ima tri glavne funkcije:

  • setTimeout
  • postavitiImmediate
  • setInterval

Gore navedene funkcije su sinkrone. Faza mjerača vremena u petlji događaja ima svoj opseg ograničen na funkcije setTimeout i setInterval. Dok funkcija provjere rukuje funkcijom setImmediate.

Razmotrimo jednostavan primjer kako bismo učvrstili teorijski dio:

// aplikacija.js

funkcija odgođenaFunkcija ( ) {

konzola. log ( 'odgođena funkcija se izvršava nakon isteka vremena' ) ;

}

konzola. log ( 'Početak programa' ) ;

setTimeout ( odgođena funkcija, 2000. godine ) ;

konzola. log ( 'Kraj programa' ) ;

U ovom kodu:

  • Program se pokreće bilježenjem izjave 'Početak programa' na terminalu.
  • Zatim se poziva delayedFunction s mjeračem vremena od 2 ms, skripta koda se ne zaustavlja i nastavlja dalje rukovati kašnjenjem u pozadini.
  • Izjava “Kraj programa bilježi se nakon prve izjave.
  • Nakon odgode od 2 ms, izjava u delayedFunction se bilježi na terminal.

Izlaz

Izlaz će se prikazati kao:

Može se vidjeti da kod nije zaustavljen za obradu delayedFunction; pomiče se naprijed i nakon odgode se obrađuje povratni poziv funkcije.

Povratni pozivi na čekanju

Petlja događaja provjerava događaje koji se događaju, poput čitanja datoteka, mrežnih aktivnosti ili ulazno/izlaznih zadataka, u fazi anketiranja. Važno je znati da se u Node.js samo neki od događaja obrađuju u ovoj fazi prozivanja. Međutim, u naknadnoj iteraciji petlje događaja, određeni događaji mogu biti odgođeni do faze čekanja. Ovo je ključni koncept koji treba imati na umu prilikom optimizacije i rješavanja problema Node.js koda koji uključuje složene operacije vođene događajima.

Važno je razumjeti da tijekom faze povratnih poziva na čekanju petlja događaja dodaje odgođene događaje u red povratnih poziva na čekanju i izvodi ih. Ova faza također obrađuje neke pogreške TCP utičnica koje je sustav generirao, kao što su događaji grešaka ECONNREFUSED na određenim operativnim sustavima.

Ispod se spominje primjer kako bi se učvrstio koncept:

// aplikacija.js
konst fs = zahtijevati ( 'fs' ) ;
funkcija readFileAsync ( filePath, povratni poziv ) {
fs. readFile ( './PromiseText.txt' , 'utf8' , funkcija ( pogreška, podaci ) {
ako ( pogriješiti ) {
konzola. greška ( ` Greška datoteka za čitanje : $ { pogriješiti poruka } ` ) ;
} drugo {
konzola. log ( ` Datoteka sadržaj : $ { podaci } ` ) ;
}
uzvratiti poziv ( ) ;
} ) ;
}
konzola. log ( 'Početak programa' ) ;
readFileAsync ( './PromiseText.txt' , funkcija ( ) {
konzola. log ( 'Izvršen povratni poziv čitanja datoteke' ) ;
} ) ;
konzola. log ( 'Kraj programa' ) ;

U ovom kodu:

  • Program se pokreće zapisom naredbe “Početak programa” u terminalu.
  • ReadFileAsync definiran je asinkrono za čitanje sadržaja datoteke “PromiseText.txt”. To je parametrizirana funkcija koja izvršava funkciju povratnog poziva nakon što je datoteka pročitana.
  • Funkcija readFileAsync poziva se za početak procesa čitanja datoteke.
  • U procesu čitanja datoteke, program se ne zaustavlja; umjesto toga, prelazi na sljedeću izjavu i prijavljuje je u terminal “Kraj programa”.
  • Asinkroni događaj čitanja datoteke obrađuje se u pozadini petljom događaja.
  • Nakon što je datoteka asinkrono pročitana i sadržaj je zapisan na terminal, program zapisuje sadržaj datoteke na terminal. Nakon toga bilježi sljedeću poruku 'Povratni poziv čitanja datoteke izvršen'.
  • Petlja događaja rukuje operacijama povratnog poziva na čekanju u sljedećoj fazi.

Izlaz

Rezultat gornjeg izvršenja je:

Mirovanje, faza pripreme u Node.js

Faza mirovanja koristi se za rad s internim funkcijama u Node.js tako da nije standardna faza. Ne utječe na skriptu koda. Faza mirovanja je poput razdoblja pauze za petlju događaja tijekom koje se upravlja zadacima niskog prioriteta u pozadini. Jednostavan primjer za razumijevanje ove faze je:

konst { besposlen } = zahtijevati ( 'idle-gc' ) ;

besposlen. zanemariti ( ) ;

U ovom kodu koristi se modul 'idle-gc' koji omogućuje ignoriranje faze mirovanja. Ovo služi za rješavanje situacija kada je petlja događaja zauzeta i pozadinski zadaci se ne izvode. Upotreba idle.ignore ne smatra se optimalnom jer može uzrokovati probleme s performansama.

Faza anketiranja u Node.js

Faza ankete u Node.js služi kao:

  • Obrađuje događaje u redu čekanja za anketu i obavlja njihove odgovarajuće zadatke.
  • Odlučuje koliko će vremena provesti čekajući i provjeravajući I/O operacije u procesu.

Kako petlja događaja ulazi u fazu ankete zbog nepostojanja mjerača vremena, izvršit će se jedan od zadataka u nastavku:

  • U fazi ankete petlje događaja u Node.js, I/O događaji na čekanju stavljaju se u red čekanja i zatim se izvršavaju u sekvencijalnoj proceduri prema načelu First In and First Out dok se red čekanja ne isprazni. Tijekom izvršavanja povratnih poziva redovi čekanja za nextTick i mikrozadatke također su u akciji. To osigurava glatkoću i omogućuje učinkovitije i pouzdanije rukovanje I/O operacijama.
  • Ako je red čekanja prazan i skripta nije zakazana pomoću funkcije setImmediate(), tada će petlja događaja završiti i nastavit će se na sljedeću fazu (provjera). S druge strane, ako je raspoređivanje skripte izvršila funkcija setImmediate(), petlja događaja dopušta dodavanje povratnih poziva u red čekanja koji će ona izvršiti.

Ovo je najbolje ilustrirano jednostavnim primjerom koda:

setTimeout ( ( ) => {

konzola. log ( 'Asinkronizirana operacija dovršena' ) ;

} , 2000. godine ) ;

konzola. log ( 'Početak' ) ;

postavitiImmediate ( ( ) => {

konzola. log ( 'setImmediate povratni poziv izvršen' ) ;

} ) ;

konzola. log ( 'Kraj' ) ;

U ovom kodu:

  • Dvije poruke “Start” i “End” označavaju početak i prekid programa.
  • Funkcija setTimeout() postavlja funkciju povratnog poziva s odgodom od 2 ms i bilježi 'Async operacija dovršena' na terminalu.
  • Funkcija setImmediate() bilježi poruku 'setImmediate povratni poziv izvršen' na terminal nakon što je poruka Start zabilježena na terminalu.

Izlaz

Izlaz bi prikazao poruke sa samo minutnim opažanjem da je za 'Async operaciju dovršeno' potrebno vrijeme i da se ispisuje nakon poruke 'Kraj':

Faza provjere Node.js

Nakon što je faza ankete izvršena, izvršavaju se povratni pozivi u fazi provjere. Ako je skripta koda zakazana pomoću funkcije setImmediate(), a funkcija ankete je besplatna, petlja događaja radi tako da prelazi izravno na fazu provjere umjesto da ostane neaktivna. Funkcija setImmediate() jedinstveni je mjerač vremena koji radi tijekom različitih faza petlje događaja.

Libuv API koristi se za planiranje izvršenja povratnog poziva nakon što je izvršenje faze ankete dovršeno. Tijekom izvođenja koda, petlja događaja ulazi u fazu ankete u kojoj čeka na dolazne zahtjeve za povezivanje. U drugom slučaju, ako je povratni poziv zakazan pomoću funkcije setImmediate(), a faza ankete je prekinuta bez ikakvih aktivnosti, prijeći će u fazu provjere umjesto čekanja. Razmotrite primjer u nastavku za razumijevanje:

// aplikacija.js

konzola. log ( 'Početak' ) ;

postavitiImmediate ( ( ) => {

konzola. log ( 'Trenutni povratni poziv' ) ;

} ) ;

konzola. log ( 'Kraj' ) ;

U ovom kodu tri su poruke prijavljene na terminal. Funkcija setImmediate() zatim konačno šalje povratni poziv da zabilježi poruku ' Trenutačni povratni poziv ” do terminala.

Izlaz

Izlaz gornjeg koda pojavit će se u sljedećem nizu:

Node.js zatvara povratne pozive

Node.js koristi ovu fazu zatvaranja za pokretanje povratnih poziva za zatvaranje događaja i prekid iteracije petlje događaja. Nakon zatvaranja veze, petlja događaja obrađuje događaje zatvaranja u ovoj fazi. U ovoj fazi petlje događaja, 'nextTick()' i mikrozadaci se generiraju i obrađuju slično ostalim fazama.

Funkcija process.exit koristi se za prekid petlje događaja u bilo kojem trenutku. Petlja događaja zanemarit će sve asinkrone operacije na čekanju i proces Node.js će se prekinuti.

Jednostavan primjer za razmatranje je:

// aplikacija.js
konst neto = zahtijevati ( 'neto' ) ;
konst poslužitelj = neto. createServer ( ( utičnica ) => {
utičnica. na ( 'Zatvoriti' , ( ) => {
konzola. log ( 'Utičnica zatvorena' ) ;
} ) ;
utičnica. na ( 'podaci' , ( podaci ) => {
konzola. log ( 'Primljeni podaci:' , podaci. toString ( ) ) ;
} ) ;
} ) ;
poslužitelj. na ( 'Zatvoriti' , ( ) => {
konzola. log ( 'Poslužitelj zatvoren' ) ;
} ) ;
konst luka = 3000 ;
poslužitelj. slušati ( luka, ( ) => {
konzola. log ( `Poslužitelj sluša na portu $ { luka } ` ) ;
} ) ;
setTimeout ( ( ) => {
konzola. log ( 'Zatvaranje poslužitelja nakon 10 sekundi' ) ;
poslužitelj. Zatvoriti ( ) ;
postupak. Izlaz ( ) ;
} , 10000 ) ;

U ovom kodu:

  • const net = require('net') ” uvozi net modul potreban za rukovanje TCP poslužiteljem i “ const server = net.createServer((socket) => { ” stvara novu instancu TCP poslužitelja.
  • socket.on('close', () => {… } ” sluša “close” na svim utičnicama. Kada se veza utičnice zatvori, poruka 'Utičnica je zatvorena' zapisuje se na terminal.
  • socket.on(‘podaci’, (podaci) => {} ” provjerava dolazne podatke iz svih pojedinačnih utičnica i ispisuje ih pomoću funkcije “.toString()”.
  • server.on('close', () => {…} ” provjerava događaj “close” na samom poslužitelju, a kada se veza s poslužiteljem prekine, bilježi poruku “Server Closed” na terminalu.
  • server.listen(port, () => {…} ” sluša dolazne veze na portu.
  • setTimeout(() => {…} ” postavlja mjerač vremena od 10 ms za zatvaranje poslužitelja.

Time zaključujemo raspravu o različitim fazama petlje događaja u Node.js. Prije nego što preskočimo zaključak, razgovarajmo o još jednoj stvari, a to je kako izaći iz petlje događaja u Node.js.

Izlazak iz petlje događaja u Node.js

Petlja događaja je u fazi izvršenja sve dok postoje neki zadaci u svim redovima čekanja faza petlje događaja. Petlja događaja završava nakon što se emitira izlazna faza i vraća se povratni poziv izlaznog slušatelja ako nema više zadataka u redovima čekanja.

Eksplicitni način za prekid petlje događaja je korištenje metode '.exit'. Aktivni procesi Node.js će se odmah prekinuti čim se pozove funkcija process.exit. Svi planirani događaji i događaji na čekanju bit će odbačeni:

postupak. na ( 'Izlaz' , ( kodirati ) => {

konzola. log ( `Izlaz s kodom za izlaz : $ { kodirati } ` ) ;

} ) ;

postupak. Izlaz ( 1 ) ;

Korisnici mogu slušati funkciju .exit. Treba napomenuti da funkcija '.exit' mora biti sinkrona jer će program Node.js izaći čim presluša ovaj događaj.

Ovo zaključuje raspravu o petlji događaja. Detaljan članak koji pokriva sve koncepte, faze i primjere povezane s petljom događaja.

Zaključak

Prije razumijevanja petlje događaja, pregled sinkronih i asinkronih koncepata može pomoći u razumijevanju tijeka koda u petlji događaja. Sinkrono izvođenje znači izvođenje korak po korak, dok asinkrono izvođenje znači zaustavljanje nekih koraka bez čekanja na njihov završetak. U članku se raspravlja o radu petlje događaja zajedno sa svim fazama i odgovarajućim primjerima.