我试图在ExpresJS中的SQL查询中使用回调函数中的变量。
for (i = 1; i <= 10; i++) {
sql.query(testQuery, function(testQueryError, testQueryResult) {
if (testQueryError) {
console.log("ERROR");
} else {
//Use the index here, or some other variable outside of async function
console.log("NO ERROR");
}
});
}
但是,我这样做的结果是所有SQL查询中的索引都为10。我的理论是,所有SQL查询都会启动,并且由于它们的异步性质过程,同时循环继续进行。循环达到最大索引10,然后异步函数在继续执行时会拉取变量以供使用。那时它是10,所以它使用10,而不是启动SQL查询时的当前索引。
我不确定该如何处理。我已阅读了描述回调函数的SQL文档(https://github.com/mysqljs/mysql)。它可以采用一个可选的“ values”参数,但这似乎是为了将变量插入SQL查询中。 我似乎找不到一种只将一些变量传递给回调函数以供一般使用的方法。有人可以帮我吗?