在等待数据库查询结束和执行后续代码的这两种方式之间,性能或内存是否存在任何差异? 请注意,无论如何它都包含在常规的非异步函数中。
版本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);
});
}
}
答案 0 :(得分:0)
也有同样的情况,我认为不应该有任何性能上的差异,因为async/await
只是一些syntactic sugar
来处理承诺,我还没有看到任何使用Promises
代替Callback
函数时的性能问题。
但是async/await
版本肯定具有更好的可读性,因此更好地理解和使用。
在以异步方式执行同步流风格时也非常容易。