当前位置: 首页 > 后端技术 > Node.js

[Node]如果一个请求正在处理复杂的计算并被阻塞,后续的请求是否可以由node服务

时间:2023-04-04 00:42:27 Node.js

问题:如果一个请求正在处理复杂的计算并且被阻塞,后续的请求是否仍然可以由node服务?让我们看下面的例子consthttp=require('http');constlongComputation=()=>{让总和=0;for(leti=0;i<1e10;i++){sum+=i;};returnsum;};constserver=http.createServer();server.on('request',(req,res)=>{if(req.url==='/compute'){console.info('computestart',newDate());constsum=longComputation();console.info('Computationends',newDate());returnres.end(`Sumis${sum}`);}else{res.end('Ok')}});server.listen(3000);启动后,先请求http://localhost:3000/compute,再请求http://localhost:3000/test,会发现/compute接口响应前,/test没有进入节点服务,不会正常响应。因为/compute接口在做复杂的计算,所以后面的请求都被阻塞了。所以如果还有人问你【如果一个请求在处理复杂的计算被阻塞了,后续的请求还能进入节点服务吗?],你绝对可以回答他[No]。