处理多个Concurent Requests Express

时间:2018-04-16 00:29:02

标签: javascript node.js rest api express

我开始使用Node Js和Express创建webapi。

然后出现了以下问题:

如果我有一个能处理/请求的函数,如:

router.get('/', (req, res, next) => {
  pool.query("select * from users").then((data) => {
    setTimeout(() => {
      res.json(data.rows);
    }, 5000);
  }).catch((err) => {
    res.json({
      error: err
    });
  });
});

考虑到数据库查询花费的时间比预期的要长,其他用户是否可以同时请求相同的路由?或者表示阻止它直到它对第一个请求有响应?

** then()块内的超时功能只是为了说明我的意思。

1 个答案:

答案 0 :(得分:1)

其他用户可以同时请求相同的路线。

Node / Express自动处理并发请求。 它们在事件驱动的模型中运行,这意味着什么都不会阻塞,并且所有内Javascript是单线程的,因此每个程序在单个核心上运行,但每行代码都在执行而无需等待任何返回。