我正在使用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)
但无法实现。有没有办法让这项工作?任何参考将不胜感激。
提前致谢。
答案 0 :(得分:2)
您可以使用闭包功能创建一个可以正确访问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));
});
}