रिकर्सन के साथ कोड बहुत साफ है। http प्रतिक्रिया के वापस आने की प्रतीक्षा करें और फिर अगले प्रयास को बंद कर दें। यह नोड के सभी संस्करणों में काम करेगा।
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);
वादों का उपयोग करने वाला समाधान भी अच्छा काम करेगा, और अधिक संक्षिप्त है। उदाहरण के लिए, यदि आपके पास एक प्राप्त का संस्करण है जो एक वादा लौटाता है और नोड v7.6+, आप इस उदाहरण की तरह एक async/प्रतीक्षा फ़ंक्शन लिख सकते हैं, जो कुछ नई 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);
नोट:ये दोनों उदाहरण त्रुटि प्रबंधन को छोड़ देते हैं, लेकिन संभवतः आपके पास यह एक उत्पादन ऐप में होना चाहिए।