Node.js events模块,事件驱动,异步处理(非阻塞IO)的三种方式。

时间:2022-11-01 00:04:11



demo.js(第一种方式,异步请求改成同步请求):

var fs = require('fs');  //引入fs模块  
//异步方式读取文件内容  
fs.readFile('./package.json',function(error,data){
    if(error){
        console.log(error);
        return false;
    }
    //console.log(data);  //data是读取的十六进制的数据  
    console.log(data.toString());  //读取出所有行的信息  
});

//同步方式读取文件内容  
var data=fs.readFileSync('./package.json');
console.log(data.toString());  
demo.js(第二种方式,通过回调函数(函数作为参数进行传递)):
var fs=require('fs');
function getMime(callback){    //readFile()函数是异步的
    fs.readFile('mime.json',function(error,data){
        callback(data);
    })
}

//将回调函数当做参数进行传递
getMime(function(result){
    console.log(result.toString());
});
demo.js(第三种方式,通过events模块,事件驱动):
//我们可以通过引入 events 模块,并通过实例化 EventEmitter 类来绑定和监听事件,

var events=require('events');   // 引入 events 模块
var EventEmitter=new events.EventEmitter();   //广播和接收广播的类

//监听to_parent事件的广播
EventEmitter.on('to_parent',function(data){
    console.log("接收的数据是:" + data);   //通过监听to_parent事件的广播,接收到数据
})

//setTimeout是异步的
setTimeout(function(){
    console.log('开始广播...');
    EventEmitter.emit('to_parent','发送的数据');  //广播to_parent事件
},1000);