首页 新闻 会员 周边 捐助

求助 JavaScript for循环中的异步操作,得到好奇怪的结果

0
悬赏园豆:100 [已解决问题] 解决于 2019-04-14 18:58

//找到html目录下的所有目录,并打印出来
var dirArray = new Array();
fs.readdir("html", (err, files) => {
if (err) console.log(err);
//选择递归调用来解决
(function getdir(i){
if(i === files.length){
console.log(dirArray);
return;
}
fs.stat("html/"+files[i],(error,stats)=>{
if(error){console.log(error);return;}
//下面一句让我搞不懂
if(stats.isDirectory()) {dirArray.push(files[i]);console.log(files[i])}
})
getdir(i+1);
})(0)
})
// 最终结果:
// [](预想的结果是['bb','upload'])
// bb
// upload

Skylooker的主页 Skylooker | 初学一级 | 园豆:114
提问于:2019-04-14 17:20
< >
分享
最佳答案
0

fs.stat()是异步函数,想让该函数不影响后面语句的正常执行,采用递归方法的话,就得把第33行的 getdir(i+1) 写在fs.stat的回调函数里。

Skylooker | 初学一级 |园豆:114 | 2019-04-14 18:56
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册