c't 3/2022
S. 140
Wissen
Asynchrones JavaScript
Bild: Thorsten Hübner

Der Nächste, bitte!

Wie die Event-Loop asynchronen Code im Browser ermöglicht

In der Regel läuft der Code von Webseiten in nur einem Thread, modernen Multicore-Prozessoren zum Trotz. Echte Parallelität gibt es so nicht, aber ein schlaues Programmiermodell erlaubt dennoch „asynchronen“ Code, der nicht linear abgearbeitet wird.

Von Lars Hupel

Diese Webseite verlangsamt Ihren Browser – so oder so ähnlich vermelden es Chrome, Firefox & Co., wenn ein Skript zu viel Rechenzeit benötigt und dadurch der ganze Tab (früher der ganze Browser) ins Stocken gerät. Der Grund hierfür ist schnell erklärt: Noch genau wie damals, als JavaScript im Netscape Navigator das Licht der Welt erblickte, teilt sich der JavaScript-Code die Ausführungszeit in einem Tab mit dem Rendering und der Ereignisbehandlung. Daraus folgt unter anderem, dass keine Klicks oder Tastatureingaben verarbeitet werden, solange eine JavaScript-Funktion rödelt.

In Zeiten, in denen selbst billige Smartphones vier oder mehr Kerne haben, mag das überraschen. Warum verteilen sich JavaScript- und Browser-Code nicht schon längst auf diverse Threads? Und wenn sie es nicht tun, warum frieren Browser nicht viel häufiger ein? Moderne Websites lassen allerhand Skripte laufen, bei guter Programmierung lahmt der Browser trotzdem nicht – und bei schlechter Programmierung helfen auch mehr Kerne nicht.

Kommentare lesen (1 Beitrag)