В моем случае было полезно добавить обратный вызов вашей функции для события onload:
function preloadImage(url, callback)
{
var img=new Image();
img.src=url;
img.onload = callback;
}
И затем обернуть его для случая массива URL-адресов для изображений, которые будут предварительно загружены с обратным вызовом на всех сделано: https://jsfiddle.net/4r0Luoy7/
function preloadImages(urls, allImagesLoadedCallback){
var loadedCounter = 0;
var toBeLoadedNumber = urls.length;
urls.forEach(function(url){
preloadImage(url, function(){
loadedCounter++;
console.log('Number of loaded images: ' + loadedCounter);
if(loadedCounter == toBeLoadedNumber){
allImagesLoadedCallback();
}
});
});
function preloadImage(url, anImageLoadedCallback){
var img = new Image();
img.src = url;
img.onload = anImageLoadedCallback;
}
}
// Let's call it:
preloadImages([
'//upload.wikimedia.org/wikipedia/commons/d/da/Internet2.jpg',
'//www.csee.umbc.edu/wp-content/uploads/2011/08/www.jpg'
], function(){
console.log('All images were loaded');
});