【发布时间】:2016-08-01 12:46:37
【问题描述】:
我有 python 背景,目前正在迁移到 node.js。由于它的异步性质,我无法适应 node.js。
例如,我试图从 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 的异步特性,我需要返回一个 Promise。我不能像 python 那样编写 node.js 代码。如何将getLastRecord() 转换为返回一个promise,如何处理返回值?
其实我想做的就是这样的;
if (getLastRecord() > 20)
{
console.log("action");
}
如何在 node.js 中以可读的方式做到这一点?
我想看看在这种情况下如何使用 bluebird 实现 Promise。
【问题讨论】:
标签: mysql node.js asynchronous promise node-mysql