说明(2017-5-3 14:59:03):
1. 异步变同步:
var fs = require("fs");
var documents = [];
fs.readdir("./段虹",function(err,files){ for(var i = 0; i < files.length; i++){
// 使用立即执行函数表达式IIFE,并传入i,等价于var j = i;
(function(j){
fs.stat("./段虹/" + files[j], function(err, stats){
if(stats.isDirectory()){
documents.push(files[j]);
}
// 异步的,循环语句还没执行完,就输出了,所以不能放在外面!!
// 只能放在回调函数内部。
if(j == files.length-1){
console.log(documents);
}
});
})(i);
}
});
注意:
1. 视频里是定义了一个iterator立即执行文件,感觉有点麻烦,说后面会经常用到。还是先采用了“你不知道的JavaScript”里面的第一种方法,for循环里使用一个匿名立即执行函数表达式IIFE。
视频里的代码: