async.jsというライブラリを用いる。nodeでよく使われているらしい。
npm install async --saveでインストール
下記のコードで各URLに対して画像を取得してくる処理を実行できる。
test.js
var request = require('request'); var fs = require('fs'); var async = require('async'); var urls = ['URL1', 'URL2', 'URL3' ]; async.each(urls, function(url, callback){ request({ method: 'GET', url: url, encoding: null }, function(error, response, body) { var filename = getFilename(url); if (!error && response.statusCode === 200) { fs.writeFileSync('./img/a' + filename + '.png', body, 'binary'); console.log("loop:" + filename); } // 次のリクエストを呼ぶ。 callback(null, filename); } ); }, function(err, results) { if (err) { throw err; } console.log('series all done. '); }); function getFilename(url) { var temp = url.split('/'); return temp[temp.length - 1 ]; }