我有一个数组,保存了多个文件的URL。例如:
var files = ['1.html', '2.html', '3.html'];
我需要异步读取它们并将它们保存在一个名为cache(cache = {})的对象中。为此,我使用了以下代码:
for(var i = 0; i < files.length; i++){
require('fs').readFile(files[i], 'utf8', function (error,data) {
cache[files[i]]=data;
});
}
最终我得到了结果:
cache = { undefined : 'File 3 content' }
我理解 "readFile" 在循环结束后才执行,因此失去了作用域。有没有一种方法可以解决这个问题或者另外一种从数组中读取文件并缓存它们的方法?
function read(file, callback) { fs.readFile(file, 'utf8', callback) }
。编辑:请查看编辑后的帖子! - Linus Thiel