首先,IO操作无疑是耗时的,当服务器端接收到大量请求时,为每一个请求创建进程或线程的同时,也增加了额外的内存开销,也可能浪费更多的时间资源。由于Node.js是事件驱动的,于是它使用了事件循环来解决IO操作带来的瓶颈问题。在Node.js中,一个IO操作通常会带有一个回调函数,当IO操作完成并返回时,就会调用这个回调函数,而主线程则继续执行接下来的代码。

简单的用一个例子来说明这个问题:
   [ bootstrap ] 运行代码    下载代码
<script>
request('https://www.51qianduan.com', function(error, response, body) {
  console.log(body);
});
console.log('Done!');
</script>
这段代码的意思是向'https://www.51qianduan.com'发出请求,当请求返回这则调用回调函数输出响应信息。由于Node.js的运行机制,这段代码运行后,会立即在控制台输出'Done!',然后一段时间后再输出响应的信息。

事件循环event loop:

接下来,来讨论下事件循环的机制。首先说说调用桟,比如有如下一段代码:
   [ bootstrap ] 运行代码    下载代码
<script>
function A(arg, func){
  var a = arg;
  func();
  console.log('A');  
}
    
function B(){
  console.log('B');
} 
A(0, B);
</script>

代码描述:js阻塞IO事件循环。js阻塞IO事件循环简单介绍



213 284



用户评论
大牛,别默默的看了,快登录帮我点评一下吧!:)      登录 | 注册



×
×
51前端

注册

×
绑定手机

请绑定手机号,在继续操作

×
单次下载支付

应付金额:279

支付完成后,回到下载页面,在进行下载

官方QQ群
意见反馈
qq群

扫描上面二维码加微信群

官方QQ群

jQuery/js讨论群
群号:642649996
Css3+Html5讨论群
群号:322131262

加群请备注:从官网了解到