【Node】若是有个请求在处理复杂运算,发生阻塞了,后续请求还能进node服务吗

问题:若是有个请求在处理复杂运算,发生阻塞了,后续请求还能进node服务吗?

一块儿来看下面的案例node

const http = require('http');
const longComputation = () => {
  let sum = 0;
  for (let i = 0; i < 1e10; i++) {
    sum += i;
  };
  return sum;
};
const server = http.createServer();
server.on('request', (req, res) => {
  if (req.url === '/compute') {
    console.info('计算开始',new Date());
    const sum = longComputation();
    console.info('计算结束',new Date());
    return res.end(`Sum is ${sum}`);
  } else {
    res.end('Ok')
  }
});

server.listen(3000);

启动后,先请求http://localhost:3000/compute,再请求http://localhost:3000/test,会发如今/compute接口响应以前,/test没有进入node服务,也不会正常响应。由于/compute接口在作复杂运算,阻塞了后续请求。因此若是还有人问你【若是有个请求在处理复杂运算,发生阻塞了,后续请求还能进node服务吗?】,你能够确定的回答他【No】。ui

相关文章
相关标签/搜索