【发布时间】:2017-01-10 23:07:29
【问题描述】:
我正在尝试编写一段可重用的代码来查询数据库(带有一些参数),然后对该数据执行操作并返回一些新创建的数据。我的大致是这样的:
function loadList(config) {
var list = [];
var queryString = "SOME QUERY STRING BASED ON THE config PARAMETER";
connection.query(queryString, function (err, result) {
if err throw err;
for (var i = 0; i < result.length; i++) {
//Perform some action on the data
//IMPORTANT this changes the list variable
}
});
return list;
}
现在,这段代码不起作用,该函数几乎在所有情况下都会返回[]。这是因为return list 在查询回调运行之前很久就执行了。但是,看在上帝的份上,我无法弄清楚如何构造我的代码,以便 parent 函数的return list 运行 查询和回调都已执行.可能是因为我累了,但我实在看不出来解决办法。
我曾考虑在loadList() 中创建一个新的回调函数,该函数从查询中调用,但如果我从该回调中调用return list,它只会为该回调返回list,而不是父级功能。
实现这个的正确方法是什么?
【问题讨论】:
标签: mysql node.js express callback