Я взял приведенный выше пример Пола Грайма и изменил его, чтобы он был более понятным, но при этом выполнял ОП. Я чувствовал, что другие ответы здесь были либо сложными, либо недостаточно. Надеюсь, этот код будет немного проще подобрать и вставить. Я использовал подчеркивание для каждого цикла, но это легко изменить.
Кроме того, теперь я улучшил решение, чтобы иметь возможность обратного вызова для ошибки img. Если изображение загружено, оно добавляется в массив, в случае неудачи - нет. Я также изменил его, чтобы использовать jquery.
var loadedImages = [],
imagePaths = [{"src": "myimg.png"}, {"src": "myotherimg.png"}];
loadImages(imagePaths, loadedImages, function(loadedImages) {
console.log(loadedImages)
});
function loadImages(imagePaths, loadedImages, callback) {
if (!imagePaths) { return; }
var count = imagePaths.length;
_.each(imagePaths, function(data, key, list) {
var onLoad = function (e) {
count--;
if (0 == count) {
callback(loadedImages);
}
}
$(document.createElement("img"))
.on('load', function() {
loadedImages.push(data);
onLoad();
})
.on('error', function() { onLoad(); })
.attr("src", data["src"]);
});
},