for循环问题
发布于 10 年前 作者 sinoon 4515 次浏览 最后一次编辑是 8 年前 来自 问答

	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 回复

这个输出是对的。因为 node 只有在 cpu 操作都完成之后,才会去响应异步的事件。

@alsotang 请问,node 里面 for循环是正常的顺序吗?还是每次循环是一个异步过程,每次循环中执行的代码 关系 是异步的?

@sinoon 在Nodejs中除了你写的代码不可并发执行外,那些什么磁盘I/O,网络I/O都是可以并发执行的,也就是说他们是异步的,其实本质上说,javascript对于事件的处理是在所有代码跑完后才能处理那些事件,对于你上面的代码设置断点调试下。

@struCoder 哦哦哦,原来是这样,太感谢了,我终于明白for循环是怎么弄的了。太谢谢了!

回到顶部