Я хочу получить данные API и установить значение localStorage (после преобразования изображения с сервера в base64). Когда я получаю данные из API, я создаю простой цикл обновления URL-адреса изображения до формата base64, но this.users[key].picture["large"] = dataUrl;
не работает. Из-за значения dataUrl
не работают вне функции.
Как я могу обновить объект строки?
Что я могу сделать?
this.http.get<User[]>('https://randomuser.me/api?result=100').subscribe(data => {
this.users = data['results'];
for (let key in this.users) {
let value = this.users[key].picture["large"];
this.toDataURL('//cors-anywhere.herokuapp.com/' + value)
.then((dataUrl) => {
console.log(dataUrl);//correct returned value
this.users[key].picture["large"] = dataUrl;
});
console.log(this.users[key].picture["large"]);//not equal to dataUrl
}
this.storage.set('users', "");//clear
this.storage.set('users', this.users);
console.log(this.users);
});
моя функция toDataUrl:
public toDataURL(url) {
return fetch(url)
.then(response => response.blob())
.then(blob => new Promise((resolve, reject) => {
const reader = new FileReader();
reader.onloadend = () => resolve(reader.result);
reader.onerror = reject;
reader.readAsDataURL(blob);
}));
}