node.js自学笔记(3)-异步I/O

异步I/O是nodejs的一大特点,下面我们以一个简单的例子说明一下

异步I/O

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

如何解释异步I/O的问题,其实你就看最后一句话是最后打印还是在文件内容前打印,一般像java程序中,这种语句一般都会先读完文件的内容,然后执行最后一句话,这就是同步I/O的语言,那么nodejs的异步I/O是啥呢,先看这个程序的输出吧:

D:\node.js\0211>node file.js
end.
Helloworld,I am in testerhome

D:\node.js\0211>

啊哦,为啥是这样的呢?这就是异步I/O,它把执行读写操作发送出去后,不等待直接执行下一条语句。

同步I/O

不鼓励使用同步I/O

node.js也提供了同步读写的功能

//file.js
var fs = require('fs');
fs.readFile('testerhome.txt','utf-8',function(err,data){
    if(err){
        console.error(err);
    }else{
        console.log(data)
    }
});
console.log('end.');
var data = fs.readFileSync('testerhome1.txt','utf-8');
console.log(data);
console.log('over.');

执行该程序后的结果输出:

D:\node.js\0211>node file.js
end.
Helloworld,I am in testerhome1
over.
Helloworld,I am in testerhome

D:\node.js\0211>

看出什么端倪了么?

你可能感兴趣的:(node.js)