web-dev-qa-db-fra.com

Axios spread () avec un nombre inconnu de paramètres de rappel

J'ai besoin de traiter un nombre inconnu de AJAX (1 ou plus) avec axios, et je ne sais pas comment gérer la réponse. Je veux quelque chose comme:

let urlArray = [] // unknown # of urls (1 or more)

axios.all(urlArray)
.then(axios.spread(function () {
  let temp = [];
  for (let i = 0; i < arguments[i].length; i++)
    temp.Push(arguments[i].data);
}));

où les arguments contiendront les réponses de rappel envoyées par axios. Le problème est que arguments contient les URL de chaîne données au lieu des réponses réelles. Comment puis-je résoudre ce problème?

20
aiokos

Vous devrez quelque part faire les demandes réelles. Et puis n'utilisez pas spread mais seulement then pour recevoir le tableau de résultats:

let urlArray = [] // unknown # of urls (1 or more)

let promiseArray = urlArray.map(url => axios.get(url)); // or whatever
axios.all(promiseArray)
.then(function(results) {
  let temp = results.map(r => r.data);
  …
});
41
Bergi