我在node.js异步函数上得到Promise {<pennding>}

时间:2019-10-16 03:06:49

标签: javascript node.js asynchronous

我在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();来获取行吗?

谢谢。

1 个答案:

答案 0 :(得分:1)

在函数中完成函数调用后,可以按照@Bravo的建议编写它:

let result = await fooClass.fooFunc();

async/await的链接

如果要在函数外部调用它,则:

(async function(){
   let result = await fooClass.fooFunc();
})();