如何在nodejs中打破for循环

时间:2014-04-09 04:44:48

标签: node.js

问题很简单,我在for循环中使用了一个查询,如果计数小于15,我想退出for循环,否则增加分配。但是我无法使用break语句,即使在第一次回调之后循环也会继续执行。

  for (var i = 0; i < test; i++) {

                var sql = "SELECT count(*) as count FROM `tb_members` WHERE `assigned`=?";
                connection.query(sql, [assigned], function (err, response) {

                    if (response[0].count < 15) {

                        callback(assigned);

                    }
                    else {
                        ++assigned;

                        if (i == test - 1) {
                            callback(0);
                        }
                    }
                });
            }

2 个答案:

答案 0 :(得分:4)

编写代码的方式,所有SQL查询都将立即开始。然后,稍后,查询将开始返回结果。因此,您不能脱离for循环,因为它已经完成并且所有SQL查询都已发送。

如果您想根据前一个查询结果决定是否发送下一个查询,那么您必须一次只发送一个查询,并且由于结果的异步性质,您不能使用{{1为此循环。

一种方法一次发送一个查询然后决定是否发送下一个查询是这样的:

for

答案 1 :(得分:0)

您应该使用异步来编写这样的循环。如果你想要一个串行行为 - 你可以考虑使用async.eachSeries,然后你可以通过调用带有错误的回调函数来停止循环。此时循环将不再执行。但是在错误处理程序中 - 忽略错误。

请在此处查看:https://github.com/caolan/async#collections