@augment-vir/web
Version:
A collection of augments, helpers types, functions, and classes only for web (frontend) JavaScript environments.
26 lines (25 loc) • 769 B
JavaScript
import { DeferredPromise } from '@augment-vir/common';
/**
* Wait for an animation frame's duration. Optionally, wait for multiple frames by providing a
* `frameCount` input.
*
* @category Web
* @category Package : @augment-vir/web
* @package [`@augment-vir/web`](https://www.npmjs.com/package/@augment-vir/web)
*/
export async function waitForAnimationFrame(frameCount = 1) {
const deferredPromise = new DeferredPromise();
function requestNextFrame() {
requestAnimationFrame(() => {
frameCount--;
if (frameCount) {
requestNextFrame();
}
else {
deferredPromise.resolve();
}
});
}
requestNextFrame();
return deferredPromise.promise;
}