@augment-vir/web
Version:
A collection of augments, helpers types, functions, and classes only for web (frontend) JavaScript environments.
24 lines (23 loc) • 835 B
JavaScript
import { DeferredPromise } from '@augment-vir/common';
/**
* Load a video from a URL and wait for it to be totally loaded.
*
* @category Web
* @category Package : @augment-vir/web
* @package [`@augment-vir/web`](https://www.npmjs.com/package/@augment-vir/web)
*/
export async function loadVideo(videoUrl) {
const deferredPromise = new DeferredPromise();
const videoElement = document.createElement('video');
/** This doesn't work in WebKit on Windows. */
/* node:coverage ignore next 3 */
videoElement.addEventListener('loadeddata', () => {
deferredPromise.resolve(videoElement);
});
videoElement.onerror = () => {
deferredPromise.reject(new Error(`Failed to load '${videoUrl}'`));
};
videoElement.src = videoUrl;
videoElement.load();
return deferredPromise.promise;
}