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