请参阅此示例node.js代码:
const http = require('http');
const server = http.createServer(function (req, res) {
if (req.url === '/loop') {
console.log('LOOP');
while (true) {}
}
res.write('Hello World');
res.end();
});
server.listen(3000);
在我的脚本中,每个请求需要3到5秒来处理。 while (true) {}
就是例如。
但是,这里的nodejs在处理一个请求时没有处理另一个请求。
我想同时运行多个请求。但是,服务器一次只运行一个请求。
注意:我不想为每个请求打开群集或child_process。因为nodejs需要另一个65 ms
来启动集群或child_process。
答案 0 :(得分:0)
当您创建服务器(并侦听)时,nodejs会创建一个处理请求的事件循环,您将无法在其中使用无限循环,因为它将阻止运行服务器的事件循环。
我希望你不是在处理无限循环,而是需要时间的某个过程,因为你使用了async之类的模块 在request / res功能块中使用像这样的异步模块,
async.map(['param1','param2','param3'], task, function(err, results) {
// results of task function
});
它的作用是它将利用已经运行的eventloop并运行该进程。
指向要点:
setTimeout
函数而不是无限循环