如何将参数传递给回调函数内部

时间:2018-01-08 14:38:49

标签: javascript mysql node.js callback

这是我的代码

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循环更新。我该怎么办?

1 个答案:

答案 0 :(得分:1)

正如您所知,在异步回调中,在回调完成之前,x由for循环更新"。

使用ES6语法let而不是var的解决方案。这样声明的变量在回调中正确绑定到它们在注册回调时所具有的值,因为为循环的每次迭代创建了一个新变量,而不是使用提升到函数顶部的单个var