Rolf B: Mehrere requestAnimationFrame() ...problematisch?

Beitrag lesen

Hallo Der,

Wenn requestAnimationFrame() also hintereinander konsekutiv abspielt, heißt das also, dass ich gleichzeitig laufende Animationen in einem Callback zusammenfassen muss,

Nein. Das musst Du nicht. Wenn der Zeitpunkt für den Aufruf der Animationframe-Callbacks gekommen ist, werden sie allesamt nacheinander aufgerufen, in Reihenfolge ihrer Registrierung (genauer: in Reihenfolge ihrer ID). Wenn sie alle zusammen zu lange brauchen, dann fällt vermutlich ein Callback-Zyklus aus.

Natürlich werden die Callbacks, die in einem Zyklus neu registriert werden, erst im nächsten wieder aufgerufen.

Die Spec schreibt:

To run the animation frame callbacks for a target object target with a timestamp now:

  • Let callbacks be target's map of animation frame callbacks.
  • Let callbackHandles be the result of getting the keys of callbacks.
  • For each handle in callbackHandles, if handle exists in callbacks:
    • Let callback be callbacks[handle].
    • Remove callbacks[handle].
    • Invoke callback, passing now as the only argument, and if an exception is thrown, report the exception.

D.h. zuerst wird eingesammelt, welche Callbacks registriert sind, und dann werden die der Reihe nach aufgerufen und danach entfernt, während die gerufenen Callbacks schon wieder neue Callbacks registrieren.

Rolf

--
sumpsi - posui - obstruxi