var fs = require('fs'); var files = ['file1', 'file2', 'file3'];
//循环3次,检测3个文件的属性: var k = 0; while (true) { if (k++ > 2) { break; }
var file = files.shift();
//检测文件属性:
var path = '/var/dir/' + file;
console.log('File: %s', file); //外层打印
fs.stat(path, function(err, stats) {
console.log('%s stat invoke.', file); //内层打印
});
}
预期打印结果: File: file1 File: file2 File: file3 file1 stat invoke. file2 stat invoke. file3 stat invoke.
但实际结果: File: file1 File: file2 File: file3 file3 stat invoke. file3 stat invoke. file3 stat invoke.
这是什么情况,全部返回file3。 如果不能把闭包外层的变量file带进闭包里面,那怎么搞,谁还敢写代码。。