問題:若是有個請求在處理複雜運算,發生阻塞了,後續請求還能進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