readMain2.js代码:
//异步读取文件,如何实现等待异步操作完毕后再关闭主程序?采用闭包的方式。不然的话会出现异步尚未完成,主程序已关闭的情况
//闭包函数就是在某个函数里面在放一个函数
var http = require('http');
var readfile2=require('./readfile2');
http.createServer(function (request,response){
response.writeHead(200,{'Content-Type':'text/html;charset=utf-8'});
if(request.url!="/favicon.ico"){ //清楚第二次访问
function recall(data){//创建一个闭包回调函数
response.write(data);
response.end('ok');//操作完异步读取后,执行函数再关闭主程序
}
readfile2.readfileAsync('./index.html',recall);//异步读取文件
console.log('主程序执行完毕');
}
}).listen(8001);
readfile2.js的代码:
var fs=require('fs');
module.exports={
readfileSync:function(path){//同步读取
var data=fs.readFileSync(path,'UTF-8');
console.log(data);
console.log('同步读取已完成');
},
readfileAsync:function(path,recall){
fs.readFile(path,function(err,data){
if(err){
console.log(err);
}else{
console.log(data.toString());
recall(data);
}
});
console.log('异步读取已完成');
}
}