堵塞事例:
var fs = require(“fs”);
//引入读取文件模块
var data = fs.readFileSync(“input.txt”);
//定义一个变量用于存储读取文件的数据
console.log(data.toString());
//通过读出函数打印数据
console.log(“程序结束”);
程序显示:
hello world
程序结束
非堵塞事例
var fs = require(“fs”);
引入读取文件模块
fs.readFile(“input.txt”, function (err,data) {
//创建回调函数在读取文件的同时可以输出读取文件的数据这个是属于异步处理
if(err)return console.error(err);
console.log(data.toString());
//在读文件后,读取函数把数据传递给后面的参数(即函数)
});
console.log(“执行结束”);
程序结果:
执行结束
hello world
input.txt
hello world
总结:通过以上两个代码对比,可以看出回调函数的异步性,在读取文件后执行console语句,后执行回调函数。