Javascript 泛型池函数返回回调的结果
我是nodejs的新手,我正在使用mariasql的泛型池。一切正常。但是我将代码移到了这样一个函数中,我不确定nodejs处理事件的方式是什么,这样我就可以从函数中得到结果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
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(结果)})
});
});
}
};
中讨论了一个很好的选项摘要“”