Javascript 泛型池函数返回回调的结果

Javascript 泛型池函数返回回调的结果,javascript,node.js,Javascript,Node.js,我是nodejs的新手,我正在使用mariasql的泛型池。一切正常。但是我将代码移到了这样一个函数中,我不确定nodejs处理事件的方式是什么,这样我就可以从函数中得到结果 var pooledQuery = function (query) { var result; //return here will be the return value of pool.acquire pool.acquire(function(err, client) { v

我是nodejs的新手,我正在使用mariasql的泛型池。一切正常。但是我将代码移到了这样一个函数中,我不确定nodejs处理事件的方式是什么,这样我就可以从函数中得到结果

var pooledQuery = function (query) {
    var result;
    //return here will be the return value of pool.acquire
    pool.acquire(function(err, client) {
        var db;
        if (err != null) {
            console.log(err)
            return err;
        }

        result = [];
        db = client.query(query);
        db.on('result', function(res) {
            return res.on('row', function(row) {
                console.log(row);
                return result.push(row);
            }).on('error', function(err) {
                console.log('error');
            }).on('end', function(info) {
                return result;
            });
        }).on('end', function() {
            pool.release(client);
            return result; <-- i want to know how i can obtain this return value outside of this function?? 
        });
    });
    //since pool.acquire is non-blocking the code will reach here and return an empty value
    return result;
};
var pooledQuery=函数(查询){
var结果;
//此处的return将是pool.acquire的返回值
pool.acquire(函数(错误,客户端){
var-db;
if(err!=null){
console.log(错误)
返回错误;
}
结果=[];
db=client.query(查询);
db.on('result',函数(res){
返回res.on('行',函数(行){
控制台日志(行);
返回结果。推送(行);
}).on('error',函数(err){
console.log('error');
}).on('end',函数(info){
返回结果;
});
}).on('end',function(){
池.释放(客户);
返回结果;返回承诺

var pooledQuery=函数(查询){
返回新承诺(功能(解决、拒绝){
//此处的return将是pool.acquire的返回值
pool.acquire(函数(错误,客户端){
var-db;
if(err!=null){
拒绝(错误);//哦,不!错误,让承诺知道它失败了
}
结果=[];
db=client.query(查询);
db.on('result',函数(res){
返回res.on('行',函数(行){
控制台日志(行);
返回结果。推送(行);
}).on('error',函数(err){
拒绝(错误)//这里也是
}).on('end',函数(info){
返回结果;
});
}).on('end',function(){
池.释放(客户);
决定(结果);//你的诺言已经决定了,
//现在将调用应用于它的任何“.then”回调。
//例如` pooledQuery(query).then(函数(结果){console.log(结果)})
});
});
}

};
中讨论了一个很好的选项摘要“”