为了账号安全,请及时绑定邮箱和手机立即绑定

node实现文件列表加载,代码执行顺序怪异

node实现文件列表加载,代码执行顺序怪异

慕妹3146593 2019-03-14 17:18:50
let fs =  require ('fs');let stdin = process.stdin,    stdout = process.stdout;fs.readdir(process.cwd(),function (err,files) {    console.log(files);    console.log('');    if (!files.length){        return console.log('NO FILES\n');    }else    function file(i) {        var filename = files[i];        fs.stat(__dirname + '/' + filename, function (err, stat) {            if (stat.isDirectory()) {                console.log(i +':Dir:' + filename + '\n');            }            else {                console.log(i +':File:' + filename + '\n');            }        });        i++;        console.log("!!!"+i + files.length);        if (i === files.length){            read(); //列表扫描完后才进入        }else {            file(i); //递归加载        }    }    file(0);//初始加载})function read() {        stdout.write('ENTER THE CHOOSE\n');    stdin.resume();}按照了不起的nodejs 书中的代码敲的。。。。功能:列出当前目录的文件,在最后输出“enter the choose”debug如下!!!15 //第一个是i,第二个是length!!!25!!!35!!!45!!!55ENTER THE CHOOSE1:Dir:.idea2:File:index.js3:File:package.json4:Dir:test5:File:test.txtenter the choose 本应该在最后输出的才对。。ps且如果没有封装read函数 输出的列表顺序是无序的..
查看完整描述

1 回答

?
慕哥9229398

TA贡献1877条经验 获得超6个赞

fs.stat

是异步函数,不确定什么时候能执行完,而且只有等到同步函数执行完之后,它才开始
换成fs.statSync可以达到你要的效果


查看完整回答
反对 回复 2019-03-23
  • 1 回答
  • 0 关注
  • 431 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号