Grundlagen der Webtechnologien

console.log('A');
setTimeout(() => console.log('B'), 0);
Promise.resolve().then(() => console.log('C'));
console.log('D');

In welcher Reihenfolge erscheinen die Zeichen in der Konsole, wenn das obige JavaScript im Browser ausgeführt wird?

  1. AA → B → C → D
  2. BA → D → B → C
  3. CA → D → C → B
Antwort und Erläuterung anzeigen

Antwort: C. A → D → C → B

Das JavaScript einer Seite läuft in einem einzigen Hauptthread, und keine andere Verarbeitung kommt dazwischen, bis der gerade laufende Code fertig ist. Zuerst läuft der gesamte synchrone Code, und A und D werden ausgegeben. Die an then des Promise übergebene Funktion wird als Mikrotask unmittelbar nach dem Ende des aktuellen Codes ausgeführt, daher erscheint als Nächstes C. Auch wenn setTimeout 0 ms erhält, wird die Funktion als Task in die Warteschlange gestellt, und die Event Loop holt sie erst heraus, nachdem die Mikrotasks erledigt sind; deshalb kommt B zuletzt.

Dieses Thema üben Zur Themenseite

Weitere Fragen zu Grundlagen der Webtechnologien

  1. Welche URL hat nach der Same-Origin-Policy des Browsers denselben Ursprung wie https://www.example.com/app/index.html?
  2. JavaScript auf einer Seite unter https://app.example.com will mit fetch eine POST-Anfrage mit einem Body vom Content-Type application/json an https://api.example.net/orders senden. Welche Aussage über das Verhalten von CORS in diesem Fall ist richtig?
  3. Welche Aussage über einen Service Worker ist richtig?
  4. Was ist der Hauptzweck, auf einer Seite mit Responsive Design, die auch Smartphones unterstützt, <meta name="viewport" content="width=device-width, initial-scale=1"> in <head> zu schreiben?
  5. Die Antwort für eine „Meine Seite“, deren Inhalt für jeden Nutzer anders ist, erhält Cache-Control: private, max-age=60. Welche Aussage über die Wirkung dieser Angabe ist richtig?