Подскажите, пожалуйста, как мне передать (вынуть) получаемые данные через API с помощью fetch для работы с ними в других функциях. Делаю return, но за пределами fetch данные не видны. Внутри fetch с ними работать получается. Но не хочется нагромождать код и пихать внутрь fetch кучу функций для обработки получаемых данных.
function addZero(num) {
if (num <= 9) return '0' + num;
else return num;
}
let arr = [];
function getData(url) {
fetch(url)
.then( (responce) => {
if (responce.status >= 200 && responce.status < 300) {
return responce.json();
} else {
let error = new Error(responce.statusText);
error.response = responce;
throw error;
}
})
.then( (data) => {
let globalData = data.Global;
let date = new Date(data.Date);
let currentDate = `${date.getDate() + '-' + addZero(date.getMonth() + 1) + '-' + date.getFullYear()}`;
let output = ' ';
output += `
<tr>
<td>${currentDate}</td>
<td>${globalData.NewConfirmed}</td>
<td>${globalData.NewDeaths}</td>
<td>${globalData.NewRecovered}</td>
<td>${globalData.TotalConfirmed}</td>
<td>${globalData.TotalDeaths}</td>
<td>${globalData.TotalRecovered}</td>
</tr>
`;
document.getElementById('data-block').innerHTML = output;
arr = [globalData.NewConfirmed, globalData.NewDeaths, globalData.NewRecovered, globalData.TotalConfirmed, globalData.TotalDeaths, globalData.TotalRecovered];
console.log(arr); // Здесь данные видны, получаем массив
return arr;
})
.catch( (error) => {
console.log(error.name);
console.log('Error: ' + error.message);
console.log(error.response);
});
}
window.onload = getData('https://api.covid19api.com/summary');
console.log(arr); // Тут данные не видны получаем пустой объект, заданный перед fetch