Bonjour,
J’ai encore beaucoup de mal avec les promesses et surtout le Promise.all()
en JavaScript. Pour mon problème, je reçois une liste de missions
qui possèdent toutes un leaderId
. J’aimerais récupérer l’utilisateur correspondant à ce leaderId
. Voici mon code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 | // Je récupère les missions retrieveMissions({commit, dispatch, state}, force = false) { return new Promise((resolve, reject) => { if (state.missions.length === 0 || force) { MissionsApi.getAll() .then(missions => dispatch('setLeaders', missions.data)) .then(missions => { commit('SET_ALL_MISSIONS', missions); resolve(); }) .catch(err => reject(err)); } else { resolve(); } }); }, // Je définis les leaders pour chaque mission récupérée setLeaders({dispatch}, missions) { let promises = []; missions.forEach(mission => { promises.push( dispatch('getUserById', mission.leaderId) .then(user => { mission.leader = user; }) ); }); return Promise.all(promises); }, |
La fonction setLeaders
ne fonctionne pas, elle ne retourne rien. J’utilise le protocole Flux avec VueX, d’où les fonctions un peu bizarre comme disptach
et commit
qui me servent à appeler d’autre fonction.
Merci de votre aide !
+0
-0