1. 案例描述:
node.js开发中需要处理很多异步事件,例如 fs.readFile() 为一个异步事件,执行函数 getTxt(),并不能获取到读取的数据。
let fs = require('fs');
function getTxt() {
fs.readFile('./input.txt',(err,datas) => { //异步事件
if(err){
console.log(err)
}else{
return datas
}
})
}
let datas = getTxt();
console.log(datas); //undefined
2. 利用回调处理异步
let fs = require('fs');
function getTxt(callback) {
fs.readFile('./input.txt',(err,datas) => { //异步事件
if(err){
console.log(err)
}else{
callback(datas)
}
})
}
getTxt((datas) => {
console.log(datas.toString())//input数据
})
3. 利用events模块处理异步
let fs = require('fs');
let events = require('events');
let EventEmitter = new events.EventEmitter();//实例化事件对象
function getTxt() {
fs.readFile('./input.txt',(err,datas) => { //异步事件
if(err){
console.log(err)
}else{
EventEmitter.emit('readFile',datas)//广播事件
}
})
}
getTxt();
EventEmitter.on('readFile',(datas) => {//监听广播
console.log(datas.toString());//input数据
})