I'm trying to get a list of star wars characters and their homeworlds. the homeworld is a link so it needs another fetch to get the name, but in the console it returns [Object promise]
. I think that the problem is that trying to get the actual planet name takes too long, but how do I fix this?
const processStarWars = function (jsonObject) {
let arrStarWarsPeople = jsonObject.results;
for (const personage of arrStarWarsPeople){
const name = personage.name;
const birthYear = personage.birth_year;
const planet = fetch(personage.homeworld)
.then(function (response) {
//antwoord van functie fetch bekijken
if (!response.ok){
throw error(`Er lijkt een fout te gebeuren, status code ${response.status}`);
}else{
console.log("object goed gevonden");
return response.json();
}
}).then(function(jsonObject){
//alles is ok dus, we kunnen het object verwerken en doorgeven
console.log(jsonObject.name);
return jsonObject.name;
}).catch(function (error) {
//opvangen van een eventuele fout
console.log(`Er was een fout bij het verwerken van de JSON, fout:${error}`);
});
console.log(`${name} - ${birthYear} - ${planet}`)
}
};
const loadStarWarsInfo = function() {
fetch("https://swapi.co/api/people/")
.then(function (response) {
if (!response.ok){
throw error(`Er lijkt een fout te gebeuren, status code ${response.status}`);
}else{
console.log("object goed gevonden");
return response.json();
}
}).then(function(jsonObject){
console.log("alles oke we kunnen verder");
processStarWars(jsonObject);
}).catch(function (error) {
console.log(`Er was een fout bij het verwerken van de JSON, fout:${error}`);
})
};
document.addEventListener('DOMContentLoaded', function() {
loadStarWarsInfo();
});