当您的要
readFile执行的回调执行时,for循环将已经完成。所以
i会
files.length和
files[i]会
undefined。为了减轻这种情况,您需要将变量包装在闭包中。最简单的方法是创建一个函数来执行您的
readFile调用,然后在循环中调用该函数:
function read(file) { require('fs').readFile(file, 'utf8', function (error,data) { cache[file]=data; });}for(var i = 0; i < files.length; i++){ read(files[i]);}为了获得更好的执行控制,您可能需要研究一下async:
function readAsync(file, callback) { fs.readFile(file, 'utf8', callback);}async.map(files, readAsync, function(err, results) { // results = ['file 1 content', 'file 2 content', ...]});编辑: 异步示例使用了辅助功能。



