博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
nodejs事件编程详解
阅读量:6511 次
发布时间:2019-06-24

本文共 1427 字,大约阅读时间需要 4 分钟。

今天大象哥看了下nodejs的事件,写了几个nodejs事件的例子,先说下事件

Node里面的许多对象都会分发事件:一个net.Server对象会在每次有新连接时分发一个事件, 一个fs.readStream对象会在文件被打开的时候发出一个事件。 所有这些产生事件的对象都是 events.EventEmitter 的实例。 你可以通过require("events");来访问该模块

可以看出我们的事件是定义在events.EventEmitter 的实例,所以我们先实例化这个类
//引入events模块var events = require("events");//实例化events.EventEmitter对象var event = new events.EventEmitter();

有了事件对象后我们就可以添加自定义的事件了
//添加自定义事件event.on("myevent",function(){	console.log("我定义的事件");})

我们定义了一个myevent事件,下面我们使用它
//使用事件event.emit("myevent");

下面一些事件方法

删除一个事件event.removeListener("myevent",function(){	console.log("现在删除这个once_event事件");});//删除所有事件,或者删除某些事件event.removeAllListeners("myevent");//添加一个一次性事件,事件被触发后就被删除event.once("once_event",function(){	console.log("这是个一次性事件,事件被触发后就被删除");	});//触发一次性事件event.emit("once_event");//返回指定事件的listener数组console.log(event.listeners('myevent'));

下面给我们的对象添加事件

var util = require("util");var events = require("events");//让MyEvent继承event.EventEmitter,使用的是util.inherits这个工具来继承function MyEvent() {    events.EventEmitter.call(this);}util.inherits(MyEvent, events.EventEmitter);//MyEvent类的write方法触发了data这个事件MyEvent.prototype.write = function(data) {    this.emit("data", data);//触发DATA事件    return this;//返回对象,方便链式调用}//实例化MyEvent对象,var myevent = new MyEvent();//监听myevent的data事件myevent.on("data",function(data){	console.log("事件的回调:"+data);});//用write方法触发data事件myevent.write("一个操作后,触发了MyEvent对象的data事件");

转载于:https://my.oschina.net/tongjh/blog/279682

你可能感兴趣的文章