1
我一直在努力通过几个others,也 this循环通过数组来从各种来源的http.get数据。我知道nodeJS是异步工作的,它允许将文件写入空白或不完整的数据,但我似乎无法超越这一点。node.js遍历数组写入文件
问题:电话由,文件建立,但文件总是空
目标:遍历数组从网站的数据在本地创建文件。这里是我到目前为止有:
var file_url = 'http://js.arcgis.com/3.8amd/js/esri/',
DOWNLOAD_DIR = './esri/',
esriAMD = [ '_coremap.js', 'arcgis/csv.js'];
function readFile(callback) {
if (esriAMD.length > 0) {
var setFile = esriAMD.shift(),
file_name = url.parse(file_url).pathname.split('/').pop(),
trial = setFile.split('/').pop(),
file = fs.createWriteStream(DOWNLOAD_DIR + trial);
http.get(file_url + esriAMD, function(res) {
res.on('data', function(data) {
file.write(data);
console.log(setFile + ' has been written successfully');
});
res.on('end', function(){
console.log(setFile + ' written, moving on');
console.log(esriAMD.length);
readFile(callback);
});
//readFile(callback);
});
} else {
callback();
}
}
readFile(function() {
console.log("reading finishes");
});
任何有识之士将真正帮助。
感谢,
尝试使用简单的模块,如'request'是你可以直接管的文件流中。 – Gntem
您目前的解决方案遇到了哪些问题? – sgress454
这个“http.get(file_url + esriAMD ...”应该是“http.get(file_url + file_name ...”,对吧?另外,我会在http.get()的回调中创建文件,而不是在你的情况下应该没有问题,因为你不会再调用readFile()直到res.on('end'),但是在逻辑上它会使它更有意义。 –