常规回调 VS 回调中的 NodeJS 异步调用

NodeJS Async call inside regular callback VS callback

这两种等待数据库查询结束并执行后续代码的方式在性能内存方面是否存在差异? 请注意,它无论如何都包含在常规的非异步函数中。

版本 1(包含在常规函数中的异步/等待):

controller.on('message_received', function (message) {
    console.log("event:message_received, facebook_postback");
    newMessage(bot, message);
});


async function newMessage(bot, message) {
    try {
        const user = await User.findOne({
            where: { uid: message.user }
        });

       console.log('done');
    }
    catch (error) {
        console.error(error);
    }
}

版本 2(没有异步/等待):

controller.on('message_received', function (message) {
    console.log("event:message_received, facebook_postback");
    newMessage(bot, message);
});


function newMessage(bot, message) {
        const user = User.findOne({
            where: { uid: message.user }
        }, function(result) {
            console.log('done');
        }, function(error) {
            console.log(error);
        });
    }
}

有相同的,我认为性能上应该没有任何差异,因为 async/await 只是一些 syntactic sugar 来处理承诺,我没有看到任何性能问题关于使用 Promises 而不是 Callback 函数。

但是 async/await 版本确实具有更好的可读性,因此更易于理解和使用。

在以异步方式执行时也很容易遵循同步流样式。