如何从远程服务器下载一堆文件,并使用Node.js以特定顺序连接它们?

我试图读取服务器上的一堆JavaScript文件的内容,然后将它们连接成一个新的本地文件。 这些文件必须以特定的顺序连接(在数组中指定)。 以下是我到目前为止:

var http = require('http'); var fs = require('fs'); var commonWebFiles = getCommonWebDependenciesInOrder(); var fileContents = []; var path = '/folder/'; fs.mkdir("target"); for(var i = 0, l = commonWebFiles.length; i < l; ++i){ getFileContents(path, commonWebFiles[i]); } function getCommonWebDependenciesInOrder(){ //Hit manager to get an correctly ordered array of common web dependencies //Stub return [ 'file1.js', 'file2.js', 'file3.js' ]; }; function getFileContents(path, filename){ var contents = ""; var writeStream = fs.createWriteStream("target/" + filename, {'flags': 'a'}); var options = { host: 'ahost.net', port: 80, path: path + filename }; var req = http.get(options, function(res) { res.on('data', function(chunk) { contents += chunk; }); res.on('end', function() { writeStream.write(contents, encoding='binary'); writeStream.end(); fileContents[filename] = contents; }); }).on('error', function(e) { console.log("Got error: " + e.message); }); }; 

这下载文件并在本地重新创build,但似乎有点笨拙。 当我试图直接从一个循环的请求中写一个文件,我得到了大块的失序….我觉得必须有一个更简单的方法….

提前致谢。

使用asynchronous和请求 :

 var fs = require('fs'), async = require('async'), request = require('request'); // Utility function to overcome request's callback (err, response, body) where we're only interested in err and body function simpleRequest(url, callback) { request(url, function(err, response, body) { callback(err, body); }); } async.map(urls, simpleRequest, function(err, results) { if(err) return console.error(err); fs.writeFile(outfile, results.join('')); });