Med rekursion er koden ret ren. Vent på, at http-svaret kommer tilbage, og affyr derefter næste forsøg. Dette vil fungere i alle versioner af 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);
En løsning med løfter ville også fungere godt og er mere kortfattet. For eksempel, hvis du har en version af get, der returnerer et løfte og Node v7.6+, kan du skrive en async/wait-funktion som dette eksempel, der bruger nogle nye JS-funktioner.
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);
Bemærk:begge disse eksempler springer over fejlhåndtering, men det skal du nok have i en produktionsapp.