Home

begivenhedsløkke

Begivenhedsløkke, eller event loop, er en central komponent i asynkron programmering. Den styrer håndteringen af hændelser og tilknyttede callbacks og gør det muligt at udføre I/O og andre ventende opgaver uden at blokere programmet. En begivenhedsløkke gør det muligt at holde en enkelt tråd responsiv ved at afvikle små operationer, når de er klar, i stedet for at vente på én lang, blokkerende opgave.

Sådan fungerer den: Programmet kører i en løkke med en call stack, hvor koden udføres, og en

Miljøer og implementeringer: I webbrowsere og JavaScript-motorer er begivenhedsløkken tæt knyttet til browserens rendering og brugerinteraktion.

Fordele og ulemper: En begivenhedsløkke gør programmer mere responsive ved ikke-blokerende I/O, men den kræver ofte

eller
flere
køer
til
callbacks.
Når
koden
i
stacken
er
færdig,
henter
løkken
en
opgave
fra
køen
og
kører
den.
Nogle
opgaver
kan
genstarte
andre
opgaver
ved
at
tilføje
elementer
til
køerne.
Mange
miljøer
har
desuden
en
mikrotask-kø
(f.eks.
Promises
i
JavaScript),
der
afvikles
før
næste
rendering
eller
før
resten
af
køen.
I
Node.js
er
løkken
en
del
af
libuv
og
håndterer
I/O
og
netværk
uden
at
blokere
den
primære
tråd;
nogle
I/O
opgaver
kræver
baggrundstråde.
Forskelle
findes
i
detaljer
som
hvilke
typer
opgaver,
der
placeres
i
hvilke
køer,
og
hvordan
prioritering
varetages.
asynkrone
programmeringsmønstre
og
kan
føre
til
kompleksitet
i
rækkefølge
og
fejlrum
(f.eks.
race
conditions).
Brug
af
promises,
async/await
og
klare
kontrakter
hjælper
med
at
styre
dette.