问题:若是有个请求在处理复杂运算,发生阻塞了,后续请求还能进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