我正在Pro.ise { }关于node.js异步功能
我在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();
来获取行?
提前感谢。
回答如下:当在函数中完成函数调用时,您可以按照@Bravo的建议编写:
let result = await fooClass.fooFunc();
async/await的链接
如果要在函数外部调用它,则:
(async function(){
let result = await fooClass.fooFunc();
})();