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'),但是在邏輯上它會使它更有意義。 –