最新消息: 电脑我帮您提供丰富的电脑知识,编程学习,软件下载,win7系统下载。

在express.js控制器中等待是否会影响性能?

IT培训 admin 4浏览 0评论

在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
发布评论

评论列表 (0)

  1. 暂无评论