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

node.js中异步导致的循环问题

node.js中异步导致的循环问题

浮云间 2019-04-13 08:36:55
//forloop.jsvarfs=require('fs');varfiles=['a.txt','b.txt','c.txt'];for(vari=0;i
查看完整描述

2 回答

?
精慕HU

TA贡献1845条经验 获得超8个赞

forEach里是个function里面filename是闭包变量所以不会变
varfs=require('fs');
varfiles=['a.txt','b.txt','c.txt'];
for(vari=0;ivarfun=function(fileName){
fs.readFile(fileName,'utf-8',function(err,contents){
console.log(fileName+':'+contents);
});
}
fun(files[i]);
}
                            
查看完整回答
反对 回复 2019-04-13
?
沧海一幻觉

TA贡献1824条经验 获得超5个赞

这个跟js的语法有关,第一个出错,是由于for循环结束之后,fs.readFile的回调函数才会触发,这个时候i==files.length,但是files[files.length]为undefined(对于异步的一些概念可以参考我的文章,js异步解惑)。
第二个正确是由于对于每个forEach循环来说,fs.readFile都是在forEach内部的闭包函数内运行的,对于每个闭包函数来说filename都是闭包内部变量,不相互影响。
                            
查看完整回答
反对 回复 2019-04-13
  • 2 回答
  • 0 关注
  • 316 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信