Node.js学习笔记(6)--异步变同步

说明(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。

视频里的代码:

原文地址:https://www.cnblogs.com/Jacklovely/p/6801973.html