for (var i = 0; i < 2; i++) {
console.log("循环:",i)
result_1[i] = []
use(_match[i],"match",_lotterytype[i], function(result)
{
// console.log("循环:",i)
console.log("match:",i)
// console.log(result);
result_1[i].push(result)
use(_sort[i],"sort",_lotterytype[i], function(result)
{
console.log("sort:",i)
// console.log(result);
result_1[i].push(result)
use(_option[i],"option",_lotterytype[i], function(result)
{
console.log("option:",i)
// console.log(result);
result_1[i].push(result)
// ser.emit("done",result_1)
})//option
})//sort
})//match
};
use是一个函数,函数内部会读取文件。
让我不能理解的是,输出结果会是
循环: 0 循环: 1 match: 2
按说在每次循环的时候都应该输出 一次 console.log("match:",i) console.log("sort:",i) console.log("option:",i) 才对啊 为什么看起来就好像for循环跑过头了似的?
小弟对于nodejs的for循环异步还是有些不甚理解,还望各位指点一二。
4 回复
@sinoon 在Nodejs中除了你写的代码不可并发执行外,那些什么磁盘I/O,网络I/O都是可以并发执行的,也就是说他们是异步的,其实本质上说,javascript对于事件的处理是在所有代码跑完后才能处理那些事件,对于你上面的代码设置断点调试下。