Avec la récursivité, le code est assez propre. Attendez que la réponse http revienne, puis lancez la prochaine tentative. Cela fonctionnera dans toutes les versions de node.
var urls = ['http://stackoverflow.com/', 'http://security.stackexchange.com/', 'http://unix.stackexchange.com/'];
var processItems = function(x){
if( x < urls.length ) {
http.get(urls[x], function(res) {
// add some code here to process the response
processItems(x+1);
});
}
};
processItems(0);
Une solution utilisant des promesses fonctionnerait également bien, et est plus concise. Par exemple, si vous avez une version de get qui renvoie une promesse et Node v7.6+, vous pouvez écrire une fonction async/wait comme cet exemple, qui utilise de nouvelles fonctionnalités JS.
const urls = ['http://stackoverflow.com/', 'http://security.stackexchange.com/', 'http://unix.stackexchange.com/'];
async function processItems(urls){
for(const url of urls) {
const response = await promisifiedHttpGet(url);
// add some code here to process the response.
}
};
processItems(urls);
Remarque :ces deux exemples ignorent la gestion des erreurs, mais vous devriez probablement l'avoir dans une application de production.