我有一个Python背景,目前正在迁移到node.js.由于其异步性质,我有调整到node.js的问题。使用promise来处理node.js中的MySQL返回值
例如,我试图从MySQL函数中返回一个值。
function getLastRecord(name)
{
var connection = getMySQL_connection();
var query_str =
"SELECT name, " +
"FROM records " +
"WHERE (name = ?) " +
"LIMIT 1 ";
var query_var = [name];
var query = connection.query(query_str, query_var, function (err, rows, fields) {
//if (err) throw err;
if (err) {
//throw err;
console.log(err);
logger.info(err);
}
else {
//console.log(rows);
return rows;
}
}); //var query = connection.query(query_str, function (err, rows, fields) {
}
var rows = getLastRecord('name_record');
console.log(rows);
一些阅读后,我意识到上面的代码不能工作,我需要一个承诺返回由于node.js中的异步特性。我不能像python一样编写node.js代码。如何将getLastRecord()
转换为承诺并如何处理返回的值?
事实上,我想要做的就是这样的事情;
if (getLastRecord() > 20)
{
console.log("action");
}
这怎么可以在node.js以可读的方式完成?
我想看看在这种情况下如何使用蓝鸟实现承诺。
哦,如果你确实使用promise,请考虑bluebird!它具有更好的可读性。一些好帮手,很好理解的表演ormance等 –
如果我使用蓝鸟,我可以拿我的'getLastRecord()'函数做类似'Promisify(getLastRecord)'和'getLastRecord()'的支持诺言吗? – user781486
我认为http://bluebirdjs.com/docs/api/promise.fromcallback.html是你想要的 –