Javascript 从回调结果填充变量?

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();

开始使用node,但对它还是很陌生的。我有下面的代码,是否可以在x中从我想要的位置返回“结果”

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
});