【发布时间】:2019-11-03 03:46:12
【问题描述】:
我正在使用 node express 和 postgress。 我不确定我正在尝试做的是一个好的做法还是一个很大的错误。 在我已经向客户端返回结果后,将数据异步保存到数据库。
我尝试用 console.log 来演示它,以检查我的服务器是否会在保存过程中被阻止。
在这里你可以看到status路线和statusB路线。
app.get("/statusB", async (req, res) => {
return res.status(200).send("testAAA");
});
app.get("/status", async (req, res) => {
const userStats = await UserController.getData("id")
const x = test();
return res.status(200).send(userStats);
});
async function test() {
return new Promise(() => {
for (let x = 0; x < 10000; x++) {
setTimeout( () => {
console.log(x)
}, 5000);
}
})
}
如果我发送/status 并在发送statusB 之后,我应该发生什么。
我希望输出是:
/status 将返回 userStats 数据
/StatusB return 'testAAA'
并且计数器将异步运行。
但实际输出是:
- /status 返回用户统计数据
- 计数器运行
- /StatusB return 'testAAA' 仅在计数器完成后
控制台日志只是测试我是否可以异步获取数据并将数据保存到数据库而不是控制台日志。
【问题讨论】:
标签: node.js express asynchronous