Mit Rekursion ist der Code ziemlich sauber. Warten Sie, bis die HTTP-Antwort zurückkommt, und starten Sie dann den nächsten Versuch. Dies funktioniert in allen Versionen von 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);
Eine Lösung mit Versprechungen würde auch gut funktionieren und ist knapper. Wenn Sie beispielsweise eine Version von get haben, die ein Versprechen zurückgibt und Node v7.6+, könnten Sie eine async/await-Funktion wie dieses Beispiel schreiben, die einige neue JS-Features verwendet.
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);
Hinweis:In beiden Beispielen wird die Fehlerbehandlung übersprungen, aber Sie sollten dies wahrscheinlich in einer Produktions-App haben.