node.js的异步特性就体现在回调上。
回调函数是在完成任务后就会被调用,node中使用了大量的回调函数。
例如:我们可以一边读取文件,一边执行其他命令,在文件读取完成后,我们将文件的内容作为回调函数的参数返回,因此不会出现阻塞或等待文件I/O操作,这样可以处理大并发量请求。
实例
1.创建文件input.txt,内容如下
百度网址:www.baidu.com
2.编写main.js文件,内容如下
//载入fs模块
var fs = require("fs");
//同步读取input.txt中的内容
var data = fs.readFileSync('input.txt');
//打印出读取到的内容
console.log(data.toString());
//打印出结束s
console.log("结束");
3.执行以上代码,如下
注意:中文"百度网址"没有打印出来。如上是同步执行的。
非阻塞代码实例
修改main.js代码如下
//载入fs模块
var fs = require("fs");
//异步读取input.txt中的内容
//回调函数function()
fs.readFile('input.txt',function(err,data){
//如果出错,打印出出错信息
if (err) {return console.error(err);}
//读取完成后,将读取的内容赋值给data,打印出读取到的内容
console.log(data.toString());
});
//打印出结束
console.log("结束");
打印结果如下
备注:很明显观察到结果是异步的