Wat is Event loop?
Het mechanisme waarmee een JavaScript-runtime wachtend werk een voor een oppakt en op één thread uitvoert. Werk dat ontstaat door klikken, timers, voltooide netwerkverzoeken en dergelijke wordt als task in een rij gezet, en als de huidige code klaar is, haalt de event loop de volgende task op. Promise-callbacks (microtasks) worden na elke task allemaal uitgevoerd, vóór de volgende task. Als één stuk werk lang duurt, stoppen de afhandeling van andere gebeurtenissen en het tekenen van het scherm.
Japanse benaming: イベントループ
“Event loop” komt voor in 1 oefenvragen uit 1 onderwerpen, bijv. Basis van webtechnologie.
Vakgebied: Basis van webtechnologie
Volgorde van uitvoering
Als bijvoorbeeld na console.log('A') de uitvoer van B met setTimeout en die van C met then van een Promise wordt ingepland, en ten slotte console.log('D') wordt uitgevoerd, is de volgorde van de uitvoer A, D, C, B. Eerst wordt alle synchrone code uitgevoerd, daarna de microtask C en ten slotte de task B. Zelfs met een vertraging van 0 ms wordt setTimeout niet direct uitgevoerd.
Veelgestelde vragen
Wordt setTimeout met 0 ms direct uitgevoerd?
Nee. Na de opgegeven tijd wordt de functie als task in de rij gezet, en ze wordt pas uitgevoerd nadat de code die nu draait en de microtasks die tot dan toe zijn ingepland, klaar zijn. 0 ms betekent „zo snel mogelijk, maar na het huidige werk”.
Kan JavaScript parallel rekenen?
De JavaScript van de pagina zelf draait op één hoofdthread, maar met een Web Worker kan een script parallel op een andere thread draaien. Workers hebben geen directe toegang tot het DOM, dus ze wisselen berichten uit met de hoofdthread om resultaten door te geven.