gx
chenyc
2025-06-12 7b72ac13a83764a662159d4a49b7fffb90476ecb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import { env } from '../env/index';
import { isMediaLoaded } from './isMediaLoaded';
 
export function awaitMediaLoaded(media: HTMLImageElement | HTMLVideoElement | HTMLCanvasElement) {
  // eslint-disable-next-line consistent-return
  return new Promise((resolve, reject) => {
    if (media instanceof env.getEnv().Canvas || isMediaLoaded(media)) resolve(null);
 
    function onError(e: Event) {
      if (!e.currentTarget) return;
      // eslint-disable-next-line no-use-before-define
      e.currentTarget.removeEventListener('load', onLoad);
      e.currentTarget.removeEventListener('error', onError);
      reject(e);
    }
 
    function onLoad(e: Event) {
      if (!e.currentTarget) return;
      e.currentTarget.removeEventListener('load', onLoad);
      e.currentTarget.removeEventListener('error', onError);
      resolve(e);
    }
 
    media.addEventListener('load', onLoad);
    media.addEventListener('error', onError);
  });
}