【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】。

你可能感兴趣的:(node.js,javascript)