Javascript Node.js process.nextTick仍在阻止服务器获取请求
我得到了一段代码:Javascript Node.js process.nextTick仍在阻止服务器获取请求,javascript,node.js,http,event-loop,Javascript,Node.js,Http,Event Loop,我得到了一段代码: 从“http”导入http; 函数compute(){ 设[sum,i]=[1,1]; 而{ writeHead(200,{'Content-Type':'text/plain'}); response.end('helloworld'); }).听(5000,'127.0.0.1'); 请求({hostname:'127.0.0.1',端口:5000},(响应)=>{ console.log(“这里!”); }).end(); compute();而不是process。n
从“http”导入http;
函数compute(){
设[sum,i]=[1,1];
而{
writeHead(200,{'Content-Type':'text/plain'});
response.end('helloworld');
}).听(5000,'127.0.0.1');
请求({hostname:'127.0.0.1',端口:5000},(响应)=>{
console.log(“这里!”);
}).end();
compute();
而不是process。nextTick
而是使用setsetImmediate
。传递给nextTick
的回调在IO回调之前处理,而传递给setImmediate
的回调在任何已挂起的回调之后处理
将process.nextTick(compute);
替换为setImmediate(compute);
将CPU工作转移到子进程或工作进程也是可能的。但我不会对此进行描述,因为我的主要目的是解释如何:
function compute() {
...
console.log("good");
process.nextTick(compute);
}
将阻止HTTP服务器处理请求,而忽略有自身问题的while
循环
有关更多信息,请参见。而不是
process。nextTick
而是使用setsetImmediate
。传递到nextTick
的回调在IO回调之前处理,而传递到setImmediate
的回调在任何已挂起的回调之后处理
将process.nextTick(compute);
替换为setImmediate(compute);
将CPU工作转移到子进程或工作进程也是可能的。但我不会对此进行描述,因为我的主要目的是解释如何:
function compute() {
...
console.log("good");
process.nextTick(compute);
}
将阻止HTTP服务器处理请求,而忽略有自身问题的while
循环
更多信息,请参阅