Найти все blob по url blob и занести их в массив используя xhr
Используя данный код я могу получить из урла blob (http://localhost:3000/39727d65-c7a2-451d-8bdd-f6d0353f35c2) лишь одно значение в массиве blobArray.
const lengthFiles = Object.keys(data[path]["media"]).length; //получаю количество url Blob
const blobArray = [];
let xhr = new XMLHttpRequest()
xhr.responseType = "blob"
//перебираю все url по порядку
for (let i = 0; i < lengthFiles; i++) {
const blobURL = data[path]["media"][i]["preview"];
xhr.open("GET", blobURL);
xhr.send();
};
//выгружаю из буфера необходимый blob и заношу в массив blobArray
xhr.onload = function() {;
const recoveredBlob = xhr.response;
const reader = new FileReader();
reader.onload = function() {;
const blobAsDataUrl = reader.result;
blobArray.push(blobAsDataUrl);
};
reader.readAsDataURL(recoveredBlob);
};
console.log(blobArray) // получаю только лишь один blob, вместо нескольких
Ответы (1 шт):
Автор решения: Nickolai Bondarenko
→ Ссылка
Решил проблему занесением всего xhr компонента в цикл, тем самым получив полный массив данных
for (let i = 0; i < lengthFiles; i++) {
const xhr = new XMLHttpRequest()
xhr.responseType = "blob"
const blobURL = data[path]["media"][i]["preview"];
xhr.open("GET", blobURL);
xhr.send();
xhr.onload = function() {;
const recoveredBlob = xhr.response;
const reader = new FileReader();
reader.onload = function() {;
const blobAsDataUrl = reader.result;
blobArray.push(blobAsDataUrl);
};
reader.readAsDataURL(recoveredBlob);
};
};
console.log(blobArray)