Basis van webtechnologie
console.log('A');
setTimeout(() => console.log('B'), 0);
Promise.resolve().then(() => console.log('C'));
console.log('D');In welke volgorde worden de tekens op de console getoond als de bovenstaande JavaScript in een browser wordt uitgevoerd?
- AA → B → C → D
- BA → D → B → C
- CA → D → C → B
Antwoord en toelichting tonen
Antwoord: C. A → D → C → B
De JavaScript van een pagina draait op één hoofdthread, en ander werk komt er pas tussen als de code die nu wordt uitgevoerd, klaar is. Eerst wordt alle synchrone code uitgevoerd, waardoor A en D verschijnen. De functie die aan then van de Promise is doorgegeven, wordt als microtask uitgevoerd direct nadat de huidige code klaar is, dus daarna verschijnt C. Zelfs met 0 ms voor setTimeout wordt de functie daarvan als task in de rij van wachtende taken gezet, en de event loop haalt die er pas uit nadat de microtasks zijn afgehandeld, dus B komt als laatste.