Javascript:connection.query函数正在中断我的for循环

Javascript:connection.query函数正在中断我的for循环,javascript,node.js,loops,Javascript,Node.js,Loops,我在第一次(也是唯一一次)执行for循环时对这些值进行了注释。我做什么似乎无关紧要。。。在connection.query之后,我的for循环始终被赋予一个逃避循环的值。不知道为什么。我可以提供更多的例子。有人知道可能发生了什么事,我怎样才能避开这个问题吗? 下面是一段有此问题的代码。 我正在使用的node.js的mysql插件在这里 for(j=0;j它似乎是一个异步回调。因此,循环变量j超出回调函数的范围,将始终计算为循环结束前分配的最后一个值。另请参阅或 使用: 函数getCallbac

我在第一次(也是唯一一次)执行for循环时对这些值进行了注释。我做什么似乎无关紧要。。。在connection.query之后,我的for循环始终被赋予一个逃避循环的值。不知道为什么。我可以提供更多的例子。有人知道可能发生了什么事,我怎样才能避开这个问题吗? 下面是一段有此问题的代码。 我正在使用的node.js的mysql插件在这里


for(j=0;j它似乎是一个异步回调。因此,循环变量
j
超出回调函数的范围,将始终计算为循环结束前分配的最后一个值。另请参阅或

使用:

函数getCallbackFn(索引){ 返回函数(错误、移动、字段){ .... //“index”将始终指向函数参数 }; }
对于(j=0;j而言,它似乎是一个异步回调。因此,您的循环变量
j
超出回调函数的范围,将始终计算为循环结束前分配的最后一个值。另请参阅或

使用:

函数getCallbackFn(索引){ 返回函数(错误、移动、字段){ .... //“index”将始终指向函数参数 }; }
对于(j=0;jI)我以前从未见过这种技术,我会尝试一下,但不是100%确定到底发生了什么我明白我无法将变量传递到函数中。您能演示如何传递多个变量吗?我已经链接了一些相关问题。您所说的“传递多个变量”是什么意思?我发现我花了一段时间才明白我在看什么。我以前从未见过这种技术。我会尝试一下,但不是100%确定发生了什么我明白我不能将变量传递到函数中。你能演示如何传递多个变量吗?我已经链接了一些相关问题。你说的“传递多个变量”是什么意思我想我只是花了一段时间才明白我在看什么。
for (j=0;j<rows[i].movelimit;j++){
            //j=0
               sql2="SELECT x, y, land FROM map WHERE collision = 0 AND x>"+(lastX-55)+" AND x<"+(lastX+55)+" AND y>"+(lastY-55)+" AND y<"+(lastY+55)+" AND land='"+rows[i].land+"'"+restrictions;
               connection.query(sql2, function(err, move, fields) {
            //j=rows[i]movelimit 
function getCallbackFn(index) {
    return function(err, move, fields) {
        ....
        // "index" will always point to the function argument
    };
}
for (j=0;j<rows[i].movelimit;j++) {
    var sql2 = ...
    connection.query(sql2, getCallbackFn(j));
}
for (j=0;j<rows[i].movelimit;j++) (function(j){
    var sql2 = ...
    connection.query(sql2, function(err, move, fields) {
        ....
        // "j" points to the function argument
    });
})(j);