如何向回调函数内部传递参数

e37o9pze  于 2021-06-21  发布在  Mysql
关注(0)|答案(1)|浏览(426)

这个问题在这里已经有答案了

循环内的javascript闭包-简单实用示例(44个答案)
两年前关门了。
这是我的密码

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);
        });

我想知道 x 就在con.query()调用之前,但是在这里x由 for 在回调完成之前循环。我该怎么做??

mspsb9vt

mspsb9vt1#

如您所知,在异步回调中,“x在回调完成之前由for循环更新”。
解决方案是使用es6语法 let 而不是 var . 这样声明的变量在回调中被正确地绑定到注册回调时的值,因为循环的每次迭代都会创建一个新变量,而不是使用单个 var 它被提升到功能的顶部。

相关问题