Проверка корректности ссылок для img
Не удается проверить массив ссылок на изображения из интернета
function checkImageLink(arURLS) {
return new Promise((resolve, reject) => {
let res = [];
for (let index = 0; index < arURLS.length; index++) {
let img = new Image();
img.src = arURLS[index];
img.onload = () => {
res.push(arURLS[index]);
};
}
resolve(res);
});
}
После выполнения, данная функция возвращает пустой массив. Подскажите пожалуйста почему так.
Ответы (1 шт):
Автор решения: ksa
→ Ссылка
После выполнения, данная функция возвращает пустой массив. Подскажите пожалуйста почему так.
Мало "обещаний"... Если сделать саму загрузку картинки промисом - их можно объединить в "единый" промис. Например вот так.
const a = [
'https://s1.1zoom.ru/big3/399/339975-svetik.jpg',
'https://wallpaper.forfun.com/fetch/a6/a609f352bbc5264204247b1125224c47.jpeg',
'https://www.fonstola.ru/pic/202002/1920x1080/fonstola.ru_371534.jpg',
'https://error.jpg',
]
checkImageLink(a)
.then(a => console.log('Ответ', a))
.catch(console.log)
//
function checkImageLink(arURLS) {
return new Promise((resolve, reject) => {
const p = [];
for (let index = 0; index < arURLS.length; index++) {
p.push(loadImage(arURLS[index]));
}
Promise.allSettled(p)
.then(resolve)
.catch(reject)
});
}
//
function loadImage(url) {
return new Promise((resolve, reject) => {
const img = new Image();
img.src = url;
img.onload = _ => resolve(url)
img.onerror = _ => reject()
});
}