在私有函数 - Node.js中的函数中应用变量

时间:2015-03-18 07:26:18

标签: 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, defaultMySQLOutput);
    });
}

但这不起作用。错误说“解决方案未定义”,但是当我这样做时

mysql.query(q, function(err, results){
    resolve(results);
});

它有效。

我也试过了,

defaultMySQLOutput.call(this, err, results)

(new defaultMySQLOutput)

但无法实现。有没有办法让这项工作?任何参考将不胜感激。

提前致谢。

1 个答案:

答案 0 :(得分:2)

您可以使用闭包功能创建一个可以正确访问resolvereject的新功能:

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