【发布时间】:2016-04-25 19:04:26
【问题描述】:
我正在尝试使用 node.js 从文件系统访问多个文件。由于我正在尝试处理大量数据并且处理它们的顺序无关紧要,因此我想使用回调以异步方式执行此操作。我写了以下代码;
var fs = require('fs');
var basic_path="E:\\alphaDownload\\2016\\03";
var D1 = ['\\01','\\02','\\03','\\04'];
var D2 = ['\\00','\\01','\\02','\\03','\\04','\\05','\\06','\\07','\\08','\\09','\\10','\\11','\\12','\\13','\\14','\\15','\\16','\\17','\\18','\\19','\\20','\\21','\\22','\\23'];
var path=new Array(4);
for (var i=0;i<path.length;i++){
path[i]=new Array(24);
}
for (var j1=0; j1<D1.length; j1++){
for (var j2=0; j2<D2.length; j2++){
path[j1][j2]=basic_path+D1[j1]+D2[j2];
fs.readdir(path[j1][j2], function(err,items) {
console.log("=============="+path[j1][j2]+"================");
console.log(items);
if(err){throw err;}
else{for (var i=0; i<items.length; i++) {
fs.readFile(path[j1][j2]+'\\'+items[i],'utf8',function read(error, data){
if (error) {
console.log("-------**"+error);
}
else {
console.log(data);}
});
}}
});
}
}
但由于 readdir 和 readfile 函数的异步特性,索引变量 [j1] 和 [j2] 的值发生了变化,并且在 readfile 函数中传递了单个路径 [3][23]。
谁能想出一个出路。
【问题讨论】:
标签: javascript node.js asynchronous concurrency