这是我的代码
for (var x in items) {
var name = items[x].Name;
var hotelID = 1;
var sql = mysql.format('INSERT INTO Item(name, hotelID) VALUES(?, ?)', [name, hotelID]);
con.query(sql, function (err, result) {
if (err) {
throw err;
}
//Below x is updated by the loop.
console.log(item[x].Name);
});
我想在con.query()调用之前得到x
的值,但是在回调完成之前,x由for
循环更新。我该怎么办?
答案 0 :(得分:1)
正如您所知,在异步回调中,在回调完成之前,x由for循环更新"。
使用ES6语法let
而不是var
的解决方案。这样声明的变量在回调中正确绑定到它们在注册回调时所具有的值,因为为循环的每次迭代创建了一个新变量,而不是使用提升到函数顶部的单个var