The requestIdleCallback API […] will schedule work when there is free time at the end of a frame, or when the user is inactive. Infinite scroll is a good use case for this behavior. It is a situation that involves heavy browser repainting at the same time as scrolling.

Chrome und Opera unterstützen sie bereits seit mehr als einem Jahr, nun ziehen auch Firefox sowie eine Reihe von Android-Browsern nach: Die requestIdleCallback API ermöglicht es, Funktionen asynchron auszuführen, sobald der Browser Ressourcen zur Verfügung hat. Damit wird es nun leichter, zeitkritische Prozesse so zu timen, dass der User noch weniger als zuvor davon bemerkt.

JavaScript verfolgt unter den populären Programmiersprachen ein eher ungewöhnliches Nebenläufigkeitsmodell. Skripte laufen zwar single-threaded, also nacheinander ab, können aber durch asynchrone Skripte ergänzt werden, die u.U. erst später einsetzen. Dennoch werden auf Browser-Ebene die einzelnen Prozesse, welche durch die Skripte aufgerufen werden, erst verarbeitet, wenn der vorhergehende beendet wurde. Dieses Run-to-completion-Prinzip birgt daher die Gefahr, dass langsame Prozesse die gesamte Verarbeitungskette aufhalten.

Das kann etwa dazu führen, dass Nutzereingaben nicht verarbeitet werden, solange im Hintergrund ein anderer Prozess abläuft. Die Folge: Die Webseite scheint zu hängen oder gar abgestürzt zu sein.

Hier verspricht requestIdleCallback Abhilfe, indem darüber definierte Anweisungen erst dann ausgeführt werden, wenn die Prozesswarteschlange leer ist. Ben Halpern beschreibt auf dev.to mit einem einfachen, aber praktischen Anwendungsfall – InfiniteScroll –, wie die API genutzt werden kann.

Hinterlasse einen Kommentar