【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

相關文章
相關標籤/搜索