node.js中events模块应用

将readFile封装成一个方法(解决异步问题)

原因:因为node.js是非阻塞I/O,所以是异步的,读文件是I/O请求,所以会被抛出,等所有的非I/O请求都完成后才会进行

有异步问题的代码:

var fs = require("fs");
function fnReadFile(file){
    fs.readFile(file, function(err, data){
        return data;
    });
}
console.log(fnReadFile("hei.txt"));//输出undefined 原因fs.readFile方法是异步的

解决 方法一:回调函数

var fs = require("fs");
function fnReadFile(file, callback){
    fs.readFile(file, function(err, data){
        callback(data.toString());
    });
}
fnReadFile("hei.txt", function(res){
    console.log("读取的数据是:" + res);
});

方法二:events模块 监听on 广播emit

var events = require("events");
var fs = require("fs");
var myEvent = new events();
myEvent.on("showData", function(str){
        console.log("读取的数据是:" + str);
});
function fnReadFile(file){
        fs.readFile(file, function(err, data){
                myEvent.emit("showData", data);
        });
}
fnReadFile("hei.txt");

猜你喜欢

转载自www.cnblogs.com/luowenshuai/p/9293691.html