首页 > NodeJs中阻塞的疑问

NodeJs中阻塞的疑问

var http=require('http');
var i=0;
http.createServer(function(req,res){

    console.log(++i+" requrest accept!");
    res.writeHead(200, {'Content-Type': 'text/plain'});
    res.end('Hello word');
    while(1);


}).listen(8080);

上面的代码中,我使用while(1);阻塞了createServer的回调。在我的理解中,是由于NodeJs是单线程的,所以调用createServer创建一个侦听之后,之后的请求都会给createServer的回调,所以当我在里面主动阻塞,会对下一个阻塞请求有影响,这样理解对么?


这个回调函数的意思是:有任何发到 8080 的请求,都会执行这个回调函数。

所以,当第一个请求过来,res.end() 正常执行,请求得到正确的响应。此后,回调函数还没有执行完成,while(i) 这个语句阻塞了 v8 引擎唯一的进程和线程,不能再执行任何其它的代码。之后所有的请求,也无法被处理,更得不到响应。

你的理解,基本是正确的。

【热门文章】
【热门文章】