Skip to content

Instantly share code, notes, and snippets.

@nishanbajracharya
Created July 7, 2019 11:19
Show Gist options
  • Save nishanbajracharya/c632ca8dd230ed8e5c5324454b38d892 to your computer and use it in GitHub Desktop.
Save nishanbajracharya/c632ca8dd230ed8e5c5324454b38d892 to your computer and use it in GitHub Desktop.
Preload images in plain JavaScript
function preloadImages(srcs, onComplete = f => f) {
var imgArray = {};
var imgErrorArray = {};
var imageFailCount = 0;
var imageLoadedCount = 0;
srcs.forEach(function(src, index) {
imgArray[index] = null;
imgErrorArray[index] = null;
var img = new Image();
img.src = src;
img.onload = function() {
imgArray[index] = img;
imageLoadedCount++;
if (imageLoadedCount + imageFailCount === srcs.length) {
onComplete(imgArray, !!imageFailCount, imgErrorArray);
}
};
img.onerror = function(err) {
imageFailCount++;
imgErrorArray[index] = err;
if (imageLoadedCount + imageFailCount === srcs.length) {
onComplete(imgArray, !!imageFailCount, imgErrorArray);
}
};
});
}
var srcs = [
'./assets/img1.jpg',
'./assets/img2.jpg',
'./assets/img3.jpg',
'./assets/img4.jpg',
'./assets/img5.jpg',
'./assets/img6.jpg',
'./assets/img7.jpg',
'./assets/img8.jpg',
'./assets/img10.jpg',
];
preloadImages(srcs, function(images, err, errDetails) {
console.log('Completed', images, err, errDetails);
});
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment