Skip to content

Instantly share code, notes, and snippets.

@dmitrylebedev
Created February 8, 2017 08:57
Show Gist options
  • Save dmitrylebedev/24efb780283921917d7b18c93e16ff2c to your computer and use it in GitHub Desktop.
Save dmitrylebedev/24efb780283921917d7b18c93e16ff2c to your computer and use it in GitHub Desktop.
/**
* Проверяет, загружены ли все изображения (или изобрание)
*
* @param {Array.<string> | string} images ссылки на изображения
* @returns {Promise.<Event>}
*
* Пример использования:
*
* checkImagesLoad(['img/IMG_01.jpg', 'img/IMG_02.jpg', 'img/IMG_03.jpg'])
* .then(result => console.log('изрображения загружены'))
*
* checkImagesLoad('img/IMG_01.jpg')
* .then(result => console.log('изрображение загружено'))
*
*/
export default function checkImagesLoad(images) {
if (Array.isArray(images)) {
let imagesPromises = images.map(image => checkImageLoad(image));
return Promise.all(imagesPromises);
}
if (!(Array.isArray(images)) && typeof images !== 'string'){
throw new Error('you need pass a string or an array')
}
return checkImageLoad(images);
/**
* Проверяет загружено ли одно изображение
*
* @param {string} url ссылка на изображение
* @returns {*|Promise}
*/
function checkImageLoad(url) {
return new Promise((resolve, reject) => {
let img = new Image();
img.addEventListener('load', resolve);
img.addEventListener('error', reject);
img.src = url;
});
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment