node.js异步文件操作

nodejs的核心之一就是非阻塞的异步IO,文件读写操作时代码如下:

var fs = require('fs'); 
fs.readFile('file.txt', 'utf-8', functino(err,data){
   if (err) { 
      console.error(err); 
   } else { 
    console.log(data); 
 } 
}); 
console.log('end.'); 

  现在的问题是:这种异步是怎么实现的呢?我们知道读文件过程:Open-》Read-》Close,读文件必须按这个顺序执行,与node.js异布执行的机制是不同的。一种可能的方式是全部使用回调函数,在Open的回调中执行Read,在Read的回调中执行Close,但这样的方法显然不利于代码维护,逻辑上也混乱。另一种方法是使用事件通知机制。
  如果node.js是完全单线程的,不管怎么说,Read时如果文件比较大,必然操作时间比较长,node.js就必须分多次执行,这样的结果是效率的降低,而不是提高。所以,事实上,读文件这种操作node.js也是在另一个线程中完成的。

posted on 2013-06-03 11:23  钟湘光  阅读(581)  评论(0编辑  收藏  举报

导航