-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathloadImages.ts
More file actions
32 lines (30 loc) · 1.06 KB
/
loadImages.ts
File metadata and controls
32 lines (30 loc) · 1.06 KB
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
28
29
30
31
32
import noop from './noop';
/**
* Функция для загрузки изображения через image.onload через промис
* @param {string} src image.src
* @param {VoidFunction} onLoaded Колбэк на успешную загрузку изображения
*/
export const loadImage = async (
src: string,
onLoaded: VoidFunction
): Promise<void> =>
new Promise<void>((resolve) => {
const curImage = new Image();
curImage.src = src;
curImage.onload = () => {
onLoaded();
resolve();
};
curImage.onerror = () => resolve();
});
/**
* Утилита для асинхронной загрузки изображений
* @param {string[]} images Массив image.src
* @param {VoidFunction} onNextLoaded Колбэк, который вызывается после успешной загрузки каждого изображения
*/
export default async (
images: string[],
onNextLoaded: VoidFunction = noop
): Promise<void> => {
await Promise.all(images.map((i) => loadImage(i, onNextLoaded)));
};