Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/448.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Node.js process.nextTick仍在阻止服务器获取请求_Javascript_Node.js_Http_Event Loop - Fatal编程技术网

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
而是使用set
setImmediate
。传递给
nextTick
的回调在IO回调之前处理,而传递给
setImmediate
的回调在任何已挂起的回调之后处理

process.nextTick(compute);
替换为
setImmediate(compute);

将CPU工作转移到子进程或工作进程也是可能的。但我不会对此进行描述,因为我的主要目的是解释如何:

function compute() {
  ...
  console.log("good");
  process.nextTick(compute);
}
将阻止HTTP服务器处理请求,而忽略有自身问题的
while
循环


有关更多信息,请参见。

而不是
process。nextTick
而是使用set
setImmediate
。传递到
nextTick
的回调在IO回调之前处理,而传递到
setImmediate
的回调在任何已挂起的回调之后处理

process.nextTick(compute);
替换为
setImmediate(compute);

将CPU工作转移到子进程或工作进程也是可能的。但我不会对此进行描述,因为我的主要目的是解释如何:

function compute() {
  ...
  console.log("good");
  process.nextTick(compute);
}
将阻止HTTP服务器处理请求,而忽略有自身问题的
while
循环

更多信息,请参阅