javascript - 我在 Node.js 异步函数中收到 Promise { <pending> }

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

提前致谢。

最佳答案

当函数调用在函数内完成时,您可以按照@Bravo建议的方式编写它:

let result = await fooClass.fooFunc();

链接async/await

如果您在函数外部调用它:

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

关于javascript - 我在 Node.js 异步函数中收到 Promise { <pending> },我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58405176/

相关文章:

javascript - 如何更改Material-UI Chip的字体大小

json - ExpressJS POST 无法记录正文

node.js - 谷歌日历推送通知 : Unauthorized webhook call

javascript - nodejs变量仅在函数和子函数中

node.js - 由于每秒上限而限制和排队 API 请求

javascript - 在 Javascript 正则表达式范围内正确转义双引号

javascript - 使用 Express 从 NodeJS 服务器下载文件

javascript - Mongodb $inc 返回双倍

javascript - 网络抓取和 promise

Javascript - 等待大量异步回调返回?