node.js中events模块应用

Posted 黑熊君

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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");

 

以上是关于node.js中events模块应用的主要内容,如果未能解决你的问题,请参考以下文章

Node.js——NodeJs事件

Node.js 知名框架 Express Koa 都在使用的 Events 模块你了解吗?

Node.js Domain 模块

为啥 Node.js 不连续监听事件?

Node.js-Events 模块总结与源码解析

Node.js第三天