2016-05-10 4 views
10

Ich muss eine unbekannte Anzahl von AJAX-Anfragen (1 oder mehr) mit Axios verarbeiten, und ich bin mir nicht sicher, wie ich mit der Antwort umgehen soll. Ich möchte etwas in der Form von:Axios Spread() mit unbekannter Anzahl von Callback-Parametern

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); 
})); 

wo Argumente enthalten die Callback-Antworten von Axios gesendet werden. Das Problem ist, dass arguments die angegebenen String-URLs anstelle der tatsächlichen Antworten enthält. Wie kann ich dieses Problem lösen?

Antwort

20

Sie irgendwo müssen die tatsächlichen Anfragen machen. Und dann verwenden Sie nicht spread, sondern nur then, um das Array der Ergebnisse zu erhalten:

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); 
    … 
}); 
Verwandte Themen