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], 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 变量,但由于 Node 的异步性质,变量会在 for 循环完成执行甚至返回第一个回调之前发生变化。

我的问题是您可以将变量传递给回调函数吗?或者有人可以帮我解决其他问题。

提前致谢!

艾哈迈德

最佳答案

不是在循环中使用 for,而是使用 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
        });
    }
});

关于javascript - 将变量传递给 Node.JS 回调函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19890950/

相关文章:

javascript - IE 中的 Facebook 权限导致无限的 facebook 循环

javascript - 是否有任何原因导致我无法获取我的页面

javascript - 无法从 React 客户端向 Node.js websocket 服务器发送消息

node.js - 参数列表后缺少 Node )

javascript - Jquery 隐藏从 url 加载的表中未选定的行。

javascript - jQuery 错误 - 将事件从 iframe 绑定(bind)到 parent.window

javascript - 测试对象是否存在 JavaScript

Javascript - 本地存储 - 删除项目不起作用

javascript - 如何检测是否在新的 Windows 终端中运行?

node.js - 如何将 docker 环境变量传递给 npm 脚本?