在express.js控制器中等待是否会影响性能?
看到此示例
app.get('/users', async function(req, res, next){
try {
res.json(await db.getUsers())
} catch(err) {
next(err)
}
})
在db中查询需要花费时间,因此使用await似乎很有意义。我的问题是,是否会阻止每个“获取用户”的请求?如果是这样,那么在运行负载测试时,性能将非常差。
我可以这样做以提高性能吗?
app.get('/users', function(req, res, next){
try {
dbGetUsersCallback(res); // no await here
} catch(err) {
next(err)
}
})
const dbGetUsersCallback = async (res) => {
const ret = await db.getUsers();
res.json(res);
}
这有帮助吗?
回答如下:基本上是同一回事,您只是将主逻辑移到了另一个函数中。
每个db.getUsers()
将处于待命状态,直到他们从DB获得实际结果为止,但是此后它将很快执行。不知道是否可以进一步优化它。
我也在这里想
dbGetUsersCallback(); // no await here
您的意思是:
dbGetUsersCallback(res); // no await here
在express.js控制器中等待是否会影响性能?
看到此示例
app.get('/users', async function(req, res, next){
try {
res.json(await db.getUsers())
} catch(err) {
next(err)
}
})
在db中查询需要花费时间,因此使用await似乎很有意义。我的问题是,是否会阻止每个“获取用户”的请求?如果是这样,那么在运行负载测试时,性能将非常差。
我可以这样做以提高性能吗?
app.get('/users', function(req, res, next){
try {
dbGetUsersCallback(res); // no await here
} catch(err) {
next(err)
}
})
const dbGetUsersCallback = async (res) => {
const ret = await db.getUsers();
res.json(res);
}
这有帮助吗?
回答如下:基本上是同一回事,您只是将主逻辑移到了另一个函数中。
每个db.getUsers()
将处于待命状态,直到他们从DB获得实际结果为止,但是此后它将很快执行。不知道是否可以进一步优化它。
我也在这里想
dbGetUsersCallback(); // no await here
您的意思是:
dbGetUsersCallback(res); // no await here