Javascript 从回调结果填充变量?
开始使用node,但对它还是很陌生的。我有下面的代码,是否可以在x中从我想要的位置返回“结果”Javascript 从回调结果填充变量?,javascript,node.js,Javascript,Node.js,开始使用node,但对它还是很陌生的。我有下面的代码,是否可以在x中从我想要的位置返回“结果” function dbRequest(sql) { var x; var dbResults = client.query(sql, function (err,results,fields) { if (err) { throw err; } x = results; client.end();
function dbRequest(sql) {
var x;
var dbResults = client.query(sql, function (err,results,fields) {
if (err) {
throw err;
}
x = results;
client.end();
});
// I want x here to return what is in results.
return x;
}
不,至少不是以你尝试的方式 调用
client.query()
很可能会启动节点的异步请求。这反过来意味着,代码执行将立即继续,因此,将在回调填充之前返回x
的值
处理这类事情的一种非常方便的方法是,传入另一个回调方法,您需要定义自己(如果您想对结果执行某些操作)
例如:
function dbRequest(sql, cb) {
var dbResults = client.query(sql,function(err,results,fields) {
if (err) {
throw err;
}
if (typeof cb === 'function') {
cb(results);
}
client.end();
});
}
然后像这样称呼它
dbRequest('select * from foo', function(data) {
// do something with data
});