我在nodejs的类上具有此功能。它正在获取数据库中的所有行。
module.exports = class fooClass {
static async fooFunc() {
const mysql = require('mysql');
const util = require('util');
const conn = mysql.createConnection({
host: 'localhost',
user: 'root',
password: '',
database: 'dbname'
});
// node native promisify
const query = util.promisify(conn.query).bind(conn);
try {
const rows = await query('SELECT * FROM `dbtable`');
return rows;
} finally {
conn.end();
}
}
}
当我调用此函数时,
let result = fooClass.fooFunc();
console.log(result);
我得到这个:
Promise { <pennding> }
我可以使用fooClass.fooFunc().then...
,但这需要我在then
上添加一个回调函数,并且需要进行很多更改。
有什么方法可以仅通过调用let result = fooClass.fooFunc();
来获取行吗?
谢谢。
答案 0 :(得分:1)
在函数中完成函数调用后,可以按照@Bravo的建议编写它:
let result = await fooClass.fooFunc();
async/await的链接
如果要在函数外部调用它,则:
(async function(){
let result = await fooClass.fooFunc();
})();