gpt4 book ai didi

javascript - 回调无法正常工作node.js

转载 作者:太空宇宙 更新时间:2023-11-04 00:44:16 25 4
gpt4 key购买 nike

我正在 for 循环内执行 mysql 查询,该循环位于回调函数中,但是当我执行 console.log(i) 时,它向我显示 3 次。下面是代码。我正在使用 async.parallel,我只发布有问题的代码。 res 返回正常,但 obj 显示第三条记录三次,而是必须显示 obj1 数据、obj2 数据、obj3 数据。 console.log(i) 是示例响应。

function(user,callback){               
for(var i = 0; i < user.length ; i++) {
var obj = user[i];
mySQLConn.mySQLDBConnection.query('select id,name from table where type = ?',[obj.id],function(err,res){
console.log(i); //This shows 3 three times
obj.type = res;
userJSONArray.push(obj);
})
}

}

我想要的应该打印 1,2,3 而不是 3,3,3。非常感谢任何帮助。

最佳答案

ES6:现在可以使用 let 关键字解决这个问题。

function(user, callback) {
for (let i = 0; i < user.length; i++) {
let obj = user[i];
mySQLConn.mySQLDBConnection.query('select id,name from table where type = ?', [obj.id], function(err, res) {
console.log(i); //This shows 3 three times
obj.type = res;
userJSONArray.push(obj);
})
}
}
<小时/>

实际上你的回调工作正常。

您的数据库查询很可能是异步的。这意味着当您从数据库中获取信息时,i 已经等于 3。

您最终可以使其同步:Synchronous database queries with Node.js

关于javascript - 回调无法正常工作node.js,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35465671/

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