Это потому, что foo($imgsPost)
является синхронным и вызывается до того, как будут завершены запросы asyn c fetch. Вы можете попробовать создать кучу запросов на выборку и поместить их в массив и использовать Promise.all()
, чтобы дождаться завершения всех запросов, прежде чем вызывать foo()
.
Я не уверен, что это опечатка или просто пример, но в вашем массиве imgs нет свойства .src
.
const imgs = ["bloburl1", "bloburl2", "bloburl3", "bloburl4"];
const fetchRequests = imgs.map(img => {
return fetch(img.src)
.then(res => {
if (!res.ok) {
throw Error(res.statusText);
}
return res.blob();
})
.then(data => {
let tempBlob = data;
let reader = new FileReader();
reader.readAsDataURL(tempBlob);
reader.onloadend = function () {
return reader.result;
}
})
.catch(error => {
console.error('Error:', error);
})
}
Promise.all(fetchRequests).then(allRes => foo(allRes))