Javascript 从private function-Node.js在函数中应用变量
我将Node.js与bluebird一起使用,并尝试使用defaultMySQLOutput作为输出的模型,如下所示:Javascript 从private function-Node.js在函数中应用变量,javascript,node.js,function,Javascript,Node.js,Function,我将Node.js与bluebird一起使用,并尝试使用defaultMySQLOutput作为输出的模型,如下所示: function defaultMySQLOutput(err, result){ return err ? reject(err) : resolve(result); } function something(){ return new Promise(function(resolve, reject){ mysql.query(q, de
function defaultMySQLOutput(err, result){
return err ? reject(err) : resolve(result);
}
function something(){
return new Promise(function(resolve, reject){
mysql.query(q, defaultMySQLOutput);
});
}
但这是行不通的。错误显示“resolve is undefined”,但当我这样做时
mysql.query(q, function(err, results){
resolve(results);
});
它起作用了
我也试过
defaultMySQLOutput.call(this, err, results)
及
但却无法实现。有没有办法让这一切顺利进行?如有任何参考,将不胜感激
提前感谢。您可以使用闭包功能创建一个新函数,该函数可以正确访问
resolve
和reject
:
function defaultMySQLOutput(resolve, reject) {
return function (err, result) {
return err ? reject(err) : resolve(result);
}
}
function something(){
return new Promise(function(resolve, reject){
mysql.query(q, defaultMySQLOutput(resolve, reject));
});
}
它与mysql.query一起工作,因为您在
newpromise(函数(resolve,reject){
内部调用它,所以我尝试从该函数内部调用defaultMySQLOutput。有什么想法吗?您可以尝试类似defaultMySQLOutput(resolve,reject,err,result)
的方法,并使用likemysql.query(q,defaultMySQLOutput.bind)(这个,解决,拒绝);
太好了。我没有想到这一点,谢谢!我可以在8分钟内接受你的回答。。。
function defaultMySQLOutput(resolve, reject) {
return function (err, result) {
return err ? reject(err) : resolve(result);
}
}
function something(){
return new Promise(function(resolve, reject){
mysql.query(q, defaultMySQLOutput(resolve, reject));
});
}