gpt4 book ai didi

Javascript 和女孩的回调——两者的问题

转载 作者:行者123 更新时间:2023-11-30 06:36:57 25 4
gpt4 key购买 nike

我刚刚涉足服务器端 javascript 的奇妙世界,但仍然掌握异步处理的窍门。在弄乱了一个 Node 项目之后,我开始意识到这个 javascript 就像我过去的很多女朋友一样——他们只是不会回电。不管怎样,我希望有人能帮助我……这是代码,下面有解释:

//this is the function I'm calling to
function queryDb(connection, sql){
connect(connection, function(){
connection.query(sql, function(err, results){
if(!err){
return results;
end(connection);
}
else{
throw err;
}
});

});
}

这是我打电话的地方。在调用之后我想要执行一些代码,但直到这个函数完成处理(它实际上是对数据库的查询,所以需要更长的时间并且我的 js 继续运行)。

var queryResults = db.queryDb(db.connection, "SELECT * FROM Clients");
if(queryResults){
console.log(queryResults);
req.dbResults = queryResults;
next();
}
else{
console.log('The query results where not returned here is the queryResults variable: ' + queryResults);
}

我希望发生的事情是从父函数返回结果,然后由子函数运行一个回调函数来处理结果。我试过这个:

 queryDb(db.connection, "SELECT * FROM Clients", function(){
if(results){
console.log(results);
req.dbResults = results;
next();
}
else{
console.log('The query results where not returned here is the queryResults variable: ' + results);
}
});

但是我在“调用函数”的回调中访问不到父函数返回的结果。

最佳答案

function queryDb(connection, sql){  <--2 arguments

queryDb(db.connection, "SELECT * FROM Clients", function(){ <-- passing 3

你没有对第三个参数做任何事情,所以你的回调不会被调用。

在你的最后一个例子中,调用是异步的,所以你试图做的事情是行不通的。

并修复代码以使用那个神秘的 3 参数。

function queryDb(connection, sql, callback) {
connect(connection, function () {
connection.query(sql, function (err, results) {
if (!err) {
callback(results);
end(connection);
} else {
throw err;
}
});

});
}

关于Javascript 和女孩的回调——两者的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13886727/

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