Est-il possible d'utiliser axios.le tout avec une alors() pour chaque promesse?

J'ai une Réagir la composante qui déclenche un événement pour extraire des données. Il en résulte un nombre dynamique de procédure stockée appels d'extraction des données, et les données de chaque appel est stocké dans un emplacement totalement différent. Ensuite, j'ai besoin de re-rendre une fois que toutes les données sont reçues et disponible. Je suis à l'aide de promesses avec axios.

Puisque le nombre d'axios appels est dynamique, je suis en train de construire un tableau et de l'insérer dans axios.all comme suit:

let promises = [];

for (let i = 0; i < requests.length; i++) {
    promises.push(axios.get(request[i].url, { params: {...} }));
}

axios.all(promises).then(/* use the data */);

Le problème est que chaque axios requête retourne des données qui s'ajoute à un objet dans un tout autre endroit. Depuis je n'ai aucun moyen de les mettre tous dans le bon endroit dans un seul then (comment pourrais-je savoir quelle réponse va dans quel endroit?), J'ai essayé de faire quelque chose comme ceci:

let promises = [];

for (let i = 0; i < requests.length; i++) {
    promises.push(
        axios.get(request[i].url, { params: {...} })
            .then(response => {myObject[request[i].saveLocation] = response.data;})
    );
}

axios.all(promises).then(/* use the data */);

Toutefois, cela ne fonctionne pas comme je l'espérais. Le then après chaque get est exécuté, mais pas jusqu'à ce que bien après la then attaché à axios.all. C'est évidemment un problème parce que mon code tente d'utiliser les données avant qu'il a été enregistré à l'objet.

Est-il un moyen d'avoir un then à appeler pour chaque axios.get qui sera exécuté après son correspondant promesse est résolu, et puis, un dernier then qui sera exécuté qu'après tous les promesses sont résolus, à utiliser les données maintenant que l'objet a été rempli?

InformationsquelleAutor nanoguy | 2017-04-27