NodeJS异步调用内部常规回调VS回调

时间:2017-10-01 14:25:08

标签: javascript node.js async-await async.js

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

版本1(async / await包含在常规函数中):

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);
        });
    }
}

1 个答案:

答案 0 :(得分:0)

也有同样的情况,我认为不应该有任何性能上的差异,因为async/await只是一些syntactic sugar来处理承诺,我还没有看到任何使用Promises代替Callback函数时的性能问题。

但是async/await版本肯定具有更好的可读性,因此更好地理解和使用。

在以异步方式执行同步流风格时也非常容易。