javascript - 使用nodejs在异步函数中使用await和async的语法是什么?

标签 javascript node.js asynchronous async-await

我正在尝试在nodejs中创建一个基本的API来对数据库执行CRUD操作。 我不明白为什么结果是未定义的

exports.getPlaylist = async function (req, res) {
  console.log('Recieved getPlaylist request');
  result = await connection.executeQuery('SELECT * from Users');
  res.status(200).send(result);
  console.log(result); // Logs undefined
};

这是被调用并从数据库获取数据的函数:

async executeQuery(query) {
    connection.query(query, function (err, result) {
        if (err) {
            console.log('Error executing query: ' + err);
        }

        console.log(result); // logs correct data
        return result;

    });
}

最佳答案

您需要“ promise ”您的回调。 (请参阅 require('utils').promisify )了解应用于遵循 Node.js 回调样式的函数的简写 (function(err,result){})。

executeQuery(query) {
    return new Promise((res, rej) => {
        connection.query(query, function (err, result) {
            if (err) {
                console.log('Error executing query: ' + err);
                rej(err)
            } else {
                console.log(result); // logs correct data
                res(result);
            }
        });
    });
}

现在,在async函数中,您可以awaitexecuteQuery(query)

关于javascript - 使用nodejs在异步函数中使用await和async的语法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59825412/

相关文章:

node.js - 在 Node.js 中,如何编写单元测试页面速度?

javascript - 使用 node-amqp 模块在 Node.js 中手动确认

node.js - 如何忽略 Elasticsearch 中的撇号?

c# - async-await 是让我的程序中的两个独立任务并行运行的必要条件吗?

javascript - 你不知道的JS : Async and Performance - cooperative concurrency?

javascript - 根据下拉菜单更改注册表单?

javascript - 如何实现 Symbol.iterator?

javascript - 使时间对象事件的异步 'for of' 循环

javascript - 从 jQuery .on ("change"... 事件中调用多个函数)

javascript - 使动态创建的 div 水平滚动