Всем привет, не подскажете почему счетчик counter не увеличивается при инкременте? По идее ведь у меня три картины и трижды должен сработать
function preloadImages(sources) {
let counter = 0;
for (const source of sources) {
let img = document.createElement('img');
img.onerror = img.onload = () => {
counter++;
}
img.src = source;
}
console.log(counter);
}
let sources = [
"https://en.js.cx/images-load/1.jpg",
"https://en.js.cx/images-load/2.jpg",
"https://en.js.cx/images-load/3.jpg"
];
preloadImages(sources);
При проверке внутри цикла переменная увеличивается, но не выходит будто из этого цикла. Срабатывает если функцию отдельно написать для события. Событие не позволяет изменять значение внешней переменной или что?
ну по идее у вас все ок, просто загрузка изображений - код асинхронный, поэтому вы видите значение счётчика еще до того, как изображения были загружены (или произошла ошибка)
let counter = 0;
function preloadImages(sources) {
for (const source of sources) {
let img = document.createElement('img');
img.onerror = img.onload = () => {
counter++;
}
img.src = source;
}
}
let sources = [
"https://en.js.cx/images-load/1.jpg",
"https://en.js.cx/images-load/2.jpg",
"https://en.js.cx/images-load/3.jpg"
];
preloadImages(sources);
console.log("счётчик сразу после завершения выполнения функции:", counter);
setTimeout(() => console.log("счетчик по таймеру:", counter), 1000);
async function preloadImages(links) {
let counter = 0;
async function createImage(link) {
const img = document.createElement('img');
img.src = link;
return new Promise((resolve, reject) => {
img.onload = () => {
document.body.appendChild(img);
resolve();
};
img.onerror = (e) => reject(e);
});
}
for (const link of links) {
try {
await createImage(link);
counter++;
console.log(counter, link);
} catch (e) {
console.log('Ошибка загрузки изображения - ', link);
}
}
return counter;
}
const links = [
"https://en.js.cx/images-load/1.jpg",
"https://en.js.cx/images-load/2.jpg 123",
"https://en.js.cx/images-load/3.jpg"
];
preloadImages(links).then(count => {
console.log('Изображений загружено: %s/%s', count, links.length);
});
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Подскажите, в чём может быть проблема? Не округляются десятичные(
Есть массив из трех целых элементов, один из элементов отличается от других, остальные одинаковы, нужно сравнить элементы, и вывести индекс...
Есть парковка, на ней определенное количество мест для легковых машин и для грузовых машин