Il y a une fonction qui récupère d'abord toutes les zones d'un environnement, puis, lorsqu'elle a trouvé ces zones, pour chaque zone, elle fait un appel à l'API pour les points limites. Toutes les requêtes sont exécutées, mais le problème est que dans la fonction puis pour la première recherche si j'essaie d'écrire le nom de l'utilisateur. longueur des zones ou essayer de faire un .foreach Je reçois 0.
Je sais que c'est parce qu'il fonctionne en asynchrone et qu'il n'est pas encore chargé au moment où je fais le console.log, mais je pensais qu'il devrait l'être. C'est pourquoi nous utilisons la fonction .alors n'est-ce pas ? d'attendre que les données soient chargées.
Pour être clair : Je cherche un moyen pour que zones.length renvoie la longueur réelle du tableau d'objets et soit évalué immédiatement au lieu de 0. Je ne trouve pas comment :
Voici le code.
getZones(){
var that = this;
var zones = new Array();
fetch('api/environment/zone/1').then(function(response){
response.json().then(function(data){
data.forEach(function(element){
zones[element.zoneID] = element;
zones[element.zoneID].points = [];
fetch('api/zone/point/'+element.zoneID).then(function(response){
response.json().then(function(data){
data.forEach(function(element){
zones[element.zoneID].points.push(element);
});
}); //closing of data inner fetch.
});
});
});
}).then(function(response){
console.log(zones); //this gives all zones
console.log(zones.length); //this one gives 0
//the for each is never executed because it's still 0.
zones.forEach(function(element){
console.log(element);
});
});
}
Déjà un grand merci pour la rapidité React et de l'aide.