Если вы хотите дать браузеру несколько циклов для выполнения других задач во время загрузки миллиарда изображений, вы можете выполнить небольшую работу над серией вызовов setTimeout()
, чтобы позволить некоторым другим вещам происходить между вашими кусками работы. как это:
$('#submit').click(function() {
$.getJSON('/data.json', function(data) {
var i = 0;
var out$ = $('#out');
function appendNextImage() {
// assumes data is an array of image URLs
$('<img id="id'+i+'" src="'+data[i]+'">').load(function() {
out$.append(this);
});
i++;
if (i < data.length) {
setTimeout(appendNextImage, 1);
}
}
appendNextImage();
});
});
Я также изменил создание вашего изображения, поэтому вы добавляете уже созданный объект DOM вместо создания второго дублирующего объекта DOM и помещаете объект $('#out')
jQuery в замыкание, чтобы он не создавался заново каждый раз.
Поскольку я не могу использовать jQuery .each()
в этой структуре кодирования, мне пришлось вручную перебирать ваши данные. Я предположил, что это массив URL.