![](/img/trans.png)
[英]What are the proper use cases for process.nextTick in Node.js?
[英]Node.js process.nextTick still blocking server from getting requests
我得到了这段代码:
import http from 'http'; function compute() { let [sum, i] = [1, 1]; while (i<1000000000) { 5*2 i++; } console.log("good"); process.nextTick(compute); } http.createServer((request, response) => { response.writeHead(200, {'Content-Type': 'text/plain'}); response.end('Hello World'); }).listen(5000, '127.0.0.1'); http.request({hostname: '127.0.0.1', port: 5000}, (response) => { console.log("here !"); }).end(); compute();
该输出始终是:“好”,“好” ...并且未调用HTTP请求。我认为process.nextTick应该可以解决该问题,但是服务器仍然被阻止。 ?
代替process.nextTick
而是使用set setImmediate
。 传递给nextTick
回调将在IO回调之前进行处理,而传递给setImmediate
回调将在已处理的回调之后进行处理。
替换process.nextTick(compute);
与setImmediate(compute);
。
也可以将CPU工作移至子进程或工作进程。 但我不会描述这一点,因为我的主要观点是解释如何:
function compute() {
...
console.log("good");
process.nextTick(compute);
}
会阻塞HTTP服务器处理请求, while
忽略while
循环,这有其自身的问题。
有关更多信息,请参见setImmediate与nextTick 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.