【发布时间】:2021-12-06 12:35:15
【问题描述】:
我正在尝试了解我的 Node/Express 应用程序遇到的一个案例。
假设我有以下函数,它是在到达特定路线时调用的函数:
async function routeThatDoesStuff(req, res, next) {
doAsyncStuff()
res.status(200).json({ message: 'Completed' })
}
在这种情况下,doAsyncStuff() 对发回给用户的非关键资源进行数据库操作,因此理论上我们不需要await 它。但是,除非我把await放在前面,否则这个操作似乎并没有真正完成。
我的猜测是这与 Node.js 中的事件循环等有关。这可能是因为路由在 doAsyncStuff() 完成之前完成,因此该函数实际上并未完成,因为 Node 提前终止了它。
我最大的问题是,当父函数已经完成时,Node 如何处理异步子函数执行?
【问题讨论】:
-
“看来这个操作实际上并没有完成” - 是什么让你认为没有
await关键字异步操作没有完成? -
@Yousaf 数据库中的资源没有更新
-
可以分享
doAsyncStuff函数里面的代码吗? -
你不能阻止 JavaScript 中的异步行为
标签: node.js express async-await