for循环问题
发布于 4个月前 作者 sinoon 319 次浏览 来自 问答

    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循环是怎么弄的了。太谢谢了!

回到顶部