node.js 异步变同步——获取一个文件夹内的所有文件夹

来源:互联网 发布:淘宝指数是什么意思 编辑:程序博客网 时间:2024/05/21 09:06

获取test文件夹内的所有文件夹:


var fs = require("fs");fs.readdir('./test',function(err,files){var wenjianjia = [];console.log(files);for(var i = 0;i<files.length;i++){var filename = files[i];fs.stat('./test/'+ filename,function(err,stats){if(stats.isDirectory()){wenjianjia.push(filename);}console.log(wenjianjia);});    }});

这是因为执行回调函数时(异步),for循环已经执行完,filename='ccc';

如果我们想要读取一个文件夹,放进数组后,在读取第二个文件夹放入数组,就必须同步操作

var fs = require("fs");fs.readdir('./test',function(err,files){var wenjianjia = [];(function iterator(i){if(i==files.length){console.log(wenjianjia);return;}var filename = files[i];fs.stat('./test/'+ filename,function(err,stats){if(stats.isDirectory()){wenjianjia.push(filename);}    iterator(i+1);});    })(0)});

或者不使用异步函数fs.stat(),使用同步函数fs.statSync()

var fs = require("fs");fs.readdir('./test',function(err,files){var wenjianjia = [];for(var i = 0;i<files.length;i++){var filename = files[i];    var stats = fs.statSync('./test/'+ filename);    if(stats.isDirectory()){    wenjianjia.push(filename);    }}console.log(wenjianjia);});


阅读全文
0 0
原创粉丝点击