In pratica quello che vorrei fare è prendere i dati ottenuti tramite una fetch request, looppare sui dati con un forEach e poi memorizzare il risultato in una variabile globale.
So che l'API fetch è asincrona e ha bisogno di un po' di tempo per fare il suo lavoro, quindi se faccio un
JavaScript:
const url = '...API_URL...';
let users = [];
try {
fetch(url, { method: 'GET' })
.then(res => {
if (res.status !== 200) {
throw new Error(res.statusText);
return;
}
return res.json();
})
.then(data => {
data.data.forEach(user => {
let userData = {
firstName: user.first_name,
lastName: user.last_name
};
users.push(userData);
})
})
} catch (error) {
throw new Error(error);
}
JavaScript:
const url = '...API_URL...';
let users = [];
function getSingleUserData(userdata) {
userdata.data.forEach(user => {
let userData = {
firstName: user.first_name,
firstName: user.first_name
};
users.push(userData);
});
}
async function getUsersData() {
const res = await fetch(url, { method: 'GET' });
const data = await res.json();
getSingleUserData(data);
}
getUsersData();
So che l'API fetch è asincrona e ha bisogno di un po' di tempo per fare il suo lavoro, quindi se faccio un
console.log()
della variabile users
quello che ottengo è un array vuoto perché la fetch request è ancora in lavorazione. La mia domanda è: come posso aspettare che la fetch request sia terminata e poi memorizzare i dati nella variabile globale?