gpt4 book ai didi

javascript - 从作为参数传递的匿名函数返回

转载 作者:行者123 更新时间:2023-11-30 08:09:02 25 4
gpt4 key购买 nike

考虑以下代码:

function dbTask(q) {
mysql = new MySQL();
mysql.host = sqlHost;
mysql.user = sqlUser;
mysql.password = sqlPassword;
mysql.query("USE stock");

return mysql.query(q, function(err, results, fields) {
if(err) {
console.log("MySQL Error: " + err + ", Query: " + q);
return false;
} else {
return results; //here
}
});
};

var r = dbTask("SELECT * FROM user;");
console.log(r);

然而,我希望在倒数第二行调用 dbTask() 时从内部匿名函数返回 results,我得到不同的输出,看起来像正在使用的 mysql 库的一些内部结构。

如何让 dbTask 在调用时返回结果

最佳答案

由于 mysql.query 是异步的,因此您必须重新考虑您的体系结构。

您不必让函数返回真或假,而是必须传入处理程序,以便在查询返回真或假时调用。

像这样:

function dbTask(q, success, failure) {
mysql = new MySQL();
mysql.host = sqlHost;
mysql.user = sqlUser;
mysql.password = sqlPassword;
mysql.query("USE stock");

mysql.query(q, function(err, results, fields) {
if(err) {
console.log("MySQL Error: " + err + ", Query: " + q);
failure(err, results, fields);
} else {
success(results, fields);
}
});
};

你会这样调用它:

dbTask(q, 
function(results, fields) { /* ... */ },
function(err, results, fields) { /* ... */ });

关于javascript - 从作为参数传递的匿名函数返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13189406/

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