Загрузите изображения с колбэком
Обычно изображения начинают загружаться в момент их создания. Когда мы добавляем <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()
.