在您的代码片段中,您不能从回调函数中中断。在 node.js 中,回调函数在同一线程上运行在未指定的稍后时间。这意味着,但是当您执行回调函数时,for 循环早已完成。
为了获得您想要的效果,您需要非常显着地重组您的代码。这是一个如何做到这一点的例子(未经测试!!)。这个想法是继续调用doSomething()
项目列表,每次将其缩小一个元素,直到达到所需的结果(您的中断条件)。
function doSomething(res)
{
while (res.length > 0)
{
i = res.shift(); // remove the first element from the array and return it
if (i == 1)
{
sq3.query("SELECT * from students;",
function(err, res) {
if (err)
{
throw err;
}
if (res.length==1)
{
//do something
// continue with the remaining elements of the list
// the list will shrink by one each time as we shift off the first element
doSomething(res);
}
else
{
// no need to break, just don't schedule any more queries and nothing else will be run
}
});
sq3.end();
break; // break from the loop BEFORE the query executes. We have scheduled a callback to run when the query completes.
}
}
}