【发布时间】:2021-01-06 12:57:06
【问题描述】:
环境: Node.js、Express
问题:当到达路由的末端时,所有尚未完成的异步代码都会停止吗?我已经试验了几个小时,这似乎是真的,但有明确的答案吗?
示例:在下面的简化示例中,当/ 路由被调用时,getInfoAndSaveIt 被调用。这个函数有一个很慢的 fetch 调用,然后是一个很慢的数据库保存。在路由中,程序肯定会在函数完成之前到达res.render('homepage'); 行。在这种情况下,homepage 是否渲染以及函数中尚未完成的所有异步代码停止?或者,即使路由结束,异步代码是否会在后台继续运行?
app.get('/', function(req, res) {
getInfoAndSaveIt();
res.render('homepage');
});
function getInfoAndSaveIt() {
let randomData = fetch('https://www.example.com/data.txt');
User.updateOne({ data: randomData }, { id: 'abc123' });
}
【问题讨论】:
标签: node.js express asynchronous async-await