files/en-us/web/api/animation/updateplaybackrate/index.md
{{APIRef("Web Animations")}}
The updatePlaybackRate() method of the Web Animations API's
{{domxref("Animation")}} Interface sets the speed of an animation after first
synchronizing its playback position.
In some cases, an animation may run on a separate thread or process and will continue updating even while long-running JavaScript delays the main thread. In such a case, setting the {{domxref("Animation.playbackRate", "playbackRate")}} on the animation directly may cause the animation's playback position to jump since its playback position on the main thread may have drifted from the playback position where it is currently running.
updatePlaybackRate() is an asynchronous method that sets the speed of an
animation after synchronizing with its current playback position, ensuring that the
resulting change in speed does not produce a sharp jump. After calling
updatePlaybackRate() the animation's {{domxref("Animation.playbackRate", "playbackRate")}} is not immediately updated.
It will be updated once the animation's {{domxref("Animation.ready", "ready")}} promise is resolved.
updatePlaybackRate(playbackRate)
playbackRate
None ({{jsxref("undefined")}}).
A speed selector component would benefit from smooth updating of
updatePlaybackRate(), as demonstrated below:
speedSelector.addEventListener("input", (evt) => {
cartoon.updatePlaybackRate(parseFloat(evt.target.value));
cartoon.ready.then(() => {
console.log(`Playback rate set to ${cartoon.playbackRate}`);
});
});
{{Specifications}}
{{Compat}}