为什么以下行在等待完成之前运行?

时间:2018-06-26 19:15:19

标签: node.js

下面是我的代码。在代码中,我试图对表进行查询。但是问题是,甚至在首先打印了await函数之后使用了await以下控制台之后,才调用回调函数。首先进行回调调用然后将调用以下控制台的解决方案是什么?

 async getUsers() {
        let sql = 'SELECT * FROM login';     
        let query = await this.db.query(sql, (err, result)=>{
            if(err) throw err;
                    this.res = JSON.stringify(result);
                    console.log(this.res); //calls second
        });
        console.log(this.res); // calls first

     return this.res;
}

1 个答案:

答案 0 :(得分:2)

如果您使用的是Node MySQL 2,则根据此处的文档,语法应如下:Promise wrappers

要理解的是,Promise旨在使回调不再需要。反过来,async/await旨在使Promise更易于理解。

async getUsers() {
  try {
    const result = await this.db.query('SELECT * FROM login');
    this.res = JSON.stringify(result);
    return this.res;
  } catch (err) {
    console.error(err);
  }
}