gpt4 book ai didi

javascript - 如何在node js mysql查询函数中找到匿名函数外部的返回变量值

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

你好 friend ,我是 Node js 新手,我们如何获取 mysql 查询匿名函数中使用的变量值?

var alldata = function(){

var http = require('http'), mysql = require('mysql');

var client = mysql.createConnection({
host: '127.0.0.1',
user: 'root',
password: ''
});

client.connect();
client.query("use cakephp2");

client.query("SELECT id, title,body,created from posts",
function(err, results, fields) {
if (err) throw err;

var output = '<h1>Latest Posts</h1><ul><table border=1><tr>';
for (var index in fields) {
output += '<td>' + fields[index].name + '</td>';
}
output += '</tr>';
for (var index in results) {
output += '<tr><td>' + results[index].id + '</td>';
output += '<td>' + results[index].title + '</td>';
output += '<td>' + results[index].body + '</td>';
output += '<td>' + results[index].created + '</td></tr>';
}
output += '</ul>';
// console.log(output);
// return output;

}
);
return output ;
}
exports.alldatas = alldata();

在上面的代码中,当使用 console.log(output) 给出正确的结果时,我在 client.query 中没有找到返回输出结果,但无法访问匿名函数之外的输出值。

请帮助我

提前致谢。

最佳答案

您将无法在回调函数之外访问该变量。原因是,Node.js 有一个特殊功能,即在执行异步 IO 任务(在您的例子中是 mysql 查询)之后传递回调函数作为要执行的下一个代码块。

当你的程序进入IO模式时,你在回调函数之后编写的代码会立即执行。在回调被触发之前,output 变量还没有准备好。因此您无法访问它。

您可以阅读here

您必须在该回调函数中使用output,或者调用其中的其他函数并将output作为参数传递给它。

关于javascript - 如何在node js mysql查询函数中找到匿名函数外部的返回变量值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18208766/

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