На данный вопрос уже ответили:
Контроль порядка выдачи результатов асинхронной операции
1 ответ
Мне нужно в цикле загрузить картинку и продолжить выполнение кода. Метода wait() у картинки нет :)
что мне такое написать в onload(), чтобы выполнение цикла продолжалось только после загрузки картинки?
for(var i in images){
var img = new Image();
img.src = images[i];
img.onload(тут код);
}
UPD:
вот сам объект с путями картинок
var images = {
"image1": "screen001.PNG",
"image2": "Снимок.PNG",
"image3": "doctype.png"
};
Ответ
В данном случае можно так
var images = [];
function loadImage(index) {
var img = new Image();
img.src = images[index];
img.onload = function() {
if (index + 1 < images.length) {
loadImage(index + 1);
}
};
}
loadImage(0);
UPD
Если images это object, то моя реализация такая
var images = {
"image1": "screen001.PNG",
"image2": "Снимок.PNG",
"image3": "doctype.png"
};
var arr = getObjectKeys(images);
function getObjectKeys(o) {
var tmp = [];
for (var key in o) {
tmp.push(key);
}
return tmp;
}
function loadImage(index) {
var img = new Image();
img.src = images[arr[index]];
img.onload = function() {
if (index + 1 < arr.length) {
loadImage(index + 1);
}
};
}
loadImage(0);
Если картинка загрузится не успешно, то onload не выполнится
Комментариев нет:
Отправить комментарий