gpt4 book ai didi

javascript - 我如何构建这些回调来获取我想要的信息?

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

也许我盯着我的代码太久了,或者也许我在其他地方使用了太多回调或其他东西,但我无法弄清楚这个的逻辑。我知道在该回调函数内使用 util.inspect(rows) 中包含的值是正确的。可以这么说,我只是不知道如何将其带回表面。 dbHandler() 从传递参数的其他函数调用,并期望返回结果。

任何见解都会非常有帮助。

将 Node.js 与 Express 和 mysql 包一起使用(如果这会有所不同)。

function dbHandler(req, res, params) {
pool_user.getConnection(function (err, connection) {
if (err) {
connection.release();
res.json({
"code" : 100,
"status" : "Error in connection database"
});
return;
}
connection.query(params.query_string, function (err, rows) {
connection.release();
if(!err) {
res.json(rows); // <<--- I want to get ahold of the value of `rows`
//console.log(util.inspect(rows));
}
});
connection.on('error', function(err) {
res.json({
"code" : 100,
"status" : "Error in connection database"
});
return;
});
});
}

最佳答案

尝试返回异步函数的结果是一种反模式,永远不会起作用。

相反,重构调用代码。

不是这样 - 匿名回调不会返回给调用者

new_data = api_request_data(auth, request, 
function(error, data){
return data;
});
store(new_data);
update_screen(new_data);

更好

api_request_data(auth, request, 
function(error, data){
store(data);
update_screen(data);
});

最好

api_request_data(auth, request, 
function(error, data){
if (error){
console.log(error);
return;
}
store(data);
update_screen(data);
});

在您的代码中,数据管道看起来没问题。

connection.query(params.query_string, function (err, rows) {
connection.release();
if(!err) {
res.json(rows); // <<--- I want to get ahold of the value of `rows`
//console.log(util.inspect(rows));
}
});

代码res.json(rows);在 Node.js 应用程序中,将对包含 rows 中的数据的 JSON 字符串进行排队。用于写入 res 中引用的当前 Web 连接。

您的问题表明问题在于该行不会将数据返回给 dbHandler() 的调用者,但没有受过训练的 Node.js 开发人员会期望这种情况发生。该代码对于传递 rows 中的数据看起来是正确的。到 Node.js 应用程序的网络客户端。

关于javascript - 我如何构建这些回调来获取我想要的信息?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30928260/

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