Я получаю данные из API и сохраняю их в классе. Когда я пытаюсь вывести данные в функции, это дает мне ошибку undefined
, но когда я вызываю их в консоли, я могу получить вывод.
class Api{
GetAllRates(){
async function getData(){
const Data = await fetch(`https://api.exchangeratesapi.io/latest?`);
const JData = await Data.json();
return JData
}
getData()
.then(data=>{
this.Jdata = data;
})
.catch(err=>console.log(err));
}
makeUi(){
Ui.compareSection(this.Jdata); // TypeError: data is undefined //
}
}
Я тоже пробовал это, но я получить { }
в качестве выходных данных
class Api{
constructor(){
this.Jdata = {};
}
GetAllRates(){
async function getData(base=`EUR`){
const Data = await fetch(`https://api.exchangeratesapi.io/latest?`);
const JData = await Data.json();
return JData
}
getData()
.then(data=>{
this.Jdata = data;
})
.catch(err=>console.log(err));
}
makeUi(){
Ui.compareSection(this.Jdata);
}
}
Проблема была решена с помощью следующего метода сначала разрушить обещание, а затем присвоить его переменным.
class Api{
GetAllRates(){
async function getData(base=`EUR`){
const Data = await fetch(`https://api.exchangeratesapi.io/latest?`);
const JData = await Data.json();
return JData
}
getData()
.then(data=>{
this.Hdata = {
"base":data.base,
"rates":data.rates
}
})
.catch(err=>console.log(err));
}