Загрузите изображения с колбэком
Обычно изображения начинают загружаться в момент их создания. Когда мы добавляем <img> на страницу, пользователь не увидит его тут же. Браузер сначала должен его загрузить.
Чтобы показать изображение сразу, мы можем создать его «заранее»:
let img = document.createElement('img');
img.src = 'my.jpg';
Браузер начнёт загружать изображение и положит его в кеш. Позже, когда такое же изображение появится в документе (не важно как), оно будет показано мгновенно.
Создайте функцию preloadImages(sources, callback), которая загружает все изображения из массива sources и, когда все они будут загружены, вызывает callback.
В данном примере будет показан alert после загрузки всех изображений.
function loaded() {
alert("Изображения загружены")
}
preloadImages(["1.jpg", "2.jpg", "3.jpg"], loaded);
В случае ошибки функция должна считать изображение «загруженным».
Другими словами, callback выполняется в том случае, когда все изображения либо загружены, либо в процессе их загрузки возникла ошибка.
Такая функция полезна, например, когда нам нужно показать галерею с маленькими скролящимися изображениями, и мы хотим быть уверены, что все из них загружены.
В песочнице подготовлены ссылки к тестовым изображениям, а также код для проверки их загрузки. Код должен выводить 300.
Алгоритм:
- Создадим
imgдля каждого ресурса. - Добавим обработчики
onload/onerrorдля каждого изображения. - Увеличиваем счётчик при срабатывании
onloadилиonerror. - Когда значение счётчика равно количеству ресурсов – тогда вызываем
callback().