mediawiki-skins-Citizen/resources/skins.citizen.scripts/deferUntilFrame.js

24 lines
596 B
JavaScript
Raw Permalink Normal View History

// Adopted from Vector 2022
/**
* Helper method that calls a specified callback before the browser has
* performed a specified number of repaints.
*
* Uses `requestAnimationFrame` under the hood to determine the next repaint.
*
* @param {Function} callback
* @param {number} frameCount The number of frames to wait before calling the
* specified callback.
*/
function deferUntilFrame( callback, frameCount ) {
if ( frameCount === 0 ) {
callback();
return;
}
requestAnimationFrame( () => {
deferUntilFrame( callback, frameCount - 1 );
} );
}
module.exports = deferUntilFrame;