您需要使用闭包是正确的。您应该将
for循环的内容包装在一个自调用函数中,以保留
i每次迭代的值。
fs.readdir(SYNCDIR, function(err1, files) { var filesonly = []; if(!err1) { for(var i = 0; i < files.length; i++) { (function(i) { var imgFilePath = SYNCDIR + '/' + files[i]; fs.stat(imgFilePath, function(stat){ if (stat.isFile()){ filesOnly[i] = stat; } }); })(i); } }});


