Javascript 将变量传递给Node.JS回调函数

Javascript 将变量传递给Node.JS回调函数,javascript,node.js,Javascript,Node.js,我是Node.JS的新手,我正在尝试构建一个应用程序,但我遇到了一些问题,似乎找不到解决方案。我花了相当多的时间在谷歌上,但运气不佳 下面是一个小片段,它说明了我要做的事情 mysql.query('SELECT * FROM leads', function(err, res){ for(x in res){ id = res[x]; mysql.query('SELECT FROM survey WHERE lead_id = ?', [id], f

我是Node.JS的新手,我正在尝试构建一个应用程序,但我遇到了一些问题,似乎找不到解决方案。我花了相当多的时间在谷歌上,但运气不佳

下面是一个小片段,它说明了我要做的事情

mysql.query('SELECT * FROM leads', function(err, res){
    for(x in res){
        id = res[x];

        mysql.query('SELECT FROM survey WHERE lead_id = ?', [id], function(x, res){
            // I want to access the id variable here but since this is in a 
            // callback the id variable could've been changed by now

            // AND THIS DOES'T ALWAYS RETURN SOMETHING OR I COULD'VE 
            // JUST USED THE LEAD_ID IN THE RETURNED DATASET
        });
    }
});
我想访问回调中的
id
变量,但由于节点的异步性质,该变量可能已经更改,因为for循环在第一次回调返回之前就已经执行完毕

我的问题是你能把变量传递给回调函数吗?或者有人能帮我找到另一个解决方案

提前谢谢


Ahmad

不使用for in-loop use Array.forEach,通过这样做,您可以创建一个捕获id变量的闭包

mysql.query('SELECT * FROM leads', function(err, res){
   res.forEach(function(x) {
        var id = x; //Captured in the closure of the mysql.query below

        mysql.query('SELECT FROM survey WHERE lead_id = ?', [id], function(x, res){
            //Do stuff with id
        });
    }
});