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?

  1. AA → B → C → D
  2. BA → D → B → C
  3. 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.

Dit onderwerp oefenen Naar de onderwerppagina

Meer vragen over Basis van webtechnologie

  1. Welke URL wordt volgens de same-origin policy van de browser beschouwd als URL met dezelfde origin als https://www.example.com/app/index.html?
  2. JavaScript op een pagina van https://app.example.com gebruikt fetch om een POST-verzoek met een body van Content-Type: application/json naar https://api.example.net/orders te sturen. Welke beschrijving van het gedrag van CORS in dit geval is juist?
  3. Welke beschrijving van een Service Worker is juist?
  4. Wat is bij een pagina met responsive design die ook smartphones ondersteunt, het belangrijkste doel van <meta name="viewport" content="width=device-width, initial-scale=1"> in <head>?
  5. Het antwoord voor een „mijn pagina” waarvan de inhoud per gebruiker verschilt, krijgt Cache-Control: private, max-age=60. Welke beschrijving van het effect van deze instelling is juist?