Javascript 从private function-Node.js在函数中应用变量

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

我将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, 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)
的方法,并使用like
mysql.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));
    });
}