Node.js中最大的特点就是异步式I/O与事件紧密结合的编程模式。控制流程要通过事件和回调函数来组织,一个逻辑要拆分成若干个单元。
下面来看个Node.js中异步的方式读取一个文件:
var fs = require('fs');
fs.readFile('file.txt' , 'utf-8' , function (err , data) {
if (err) {
console.error(err);
} else {
console.log(data);
}
});
console.log('end.');
首先是导入文件包,然后在读文件,其中有三个参数,文件名,编码方式,回调函数,在回调函数中完成内容的输出或者是错误信息的输出。
在上面的代码执行中可以发现,具体执行是先执行下面的控制台输出,而后再执行的上面的读取文件,为什么会这样呢?
fs.readFile调用后所做的工作只是将异步I/O请求发送给了操作系统,然后立即返回并执行后面的操作,执行完以后进入循环监听时间,当fs接受到I/O请求完成 时间时,时间循环会主动调用回调函数以完成后续工作。
在Node.js并不鼓励使用同步I/O