gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 12:54:05 24 4
gpt4 key购买 nike

我是 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com