Массив изображений, каждый со слушателем событий OnloadJavascript

Форум по Javascript
Ответить
Anonymous
 Массив изображений, каждый со слушателем событий Onload

Сообщение Anonymous »

У меня есть множество объектов изображения, для которых я установил слушатель событий. Внутри слушателя событий я просто увеличиваю значение панели хода (полная полоса, когда все изображения заканчивают загрузку. < /P>

Код: Выделить всё

    let images = new Array(pageList.length);
pageList.forEach((e, idx, arr) => {
let i = new Image;
i.crossOrigin = "";
i.onload = () => { progs[progs.length-1].value += 1; }
i.src = e.url + '&w=1280';
images[idx] = i;
});
< /code>
Мне также нужно выполнить несколько действий только после того, как все изображения закончили загрузку. Я использую обещание.all () 
для этого ...

Код: Выделить всё

    Promise.all(images.filter(img => !img.complete).map(img => new Promise(resolve => { img.onload = img.onerror = resolve; }))).then(() => {
images.forEach((i) => {
let dpi = i.height/dimensions[1];
pdf.addPage([Math.round(i.width/dpi * 100) / 100, dimensions[1]], 'p');
pdf.addImage(i, 'JPEG', 0, 0, Math.round(i.width/dpi * 100) / 100, dimensions[1]);
});
})
.then();
Top Fronippet работает правильно, если и только если я не выполняю обещание. All () (например, комментирование). Это из -за Resolve => {img.onload = img.onerror = Resolve; } , который переоценивает img.onload. Обещание. Все работает как предполагалось/ожидалось. Я никогда не был сильным в материалах обещания/aysnc, и мне трудно найти правильный шаблон, чтобы сделать эту работу.
Полная функция (при необходимости).

Подробнее здесь: https://stackoverflow.com/questions/796 ... t-listener
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»