Node.js后端开发 - 基础篇 #5 事件

文章目录

一、一个简单的事件演示

二、比较真实一点的事件例子

三、nodejs事件总结


上一篇文章我们介绍了nodejs的模块、module.exports 关键字暴露内容、require关键字请求内容以及他们的多种写法,详见: Node.js后端开发 - 基础篇 #4 模块 这篇文章我们将介绍nodejs的事件,nodejs本来就是基于事件驱动的,事件是nodejs的核心,所以我们要重点好好了解学习。

一、一个简单的事件演示

我们可以在app.js里面写入以下代码:


//这个require('events')你在当前目录的模块文件是找不到的,因为这是nodejs的核心库,
//所以它可以这样直接使用,其中events它是事件的一个库。 
var events = require('events');

//新增一个事件对象
var myEmitter = new events.EventEmitter;

//然后我们要为新增的事件,绑定一个监听的函数on
//参数1:'someEvent' 为事件的名称
//参数2:事件发生后回调的函数 
myEmitter.on('someEvent',function (message) {
    console.log(message);
})

//那么怎么来触发呢? 我们可以手动用代码来触发
//参数1:事件名称。
//参数2:传入参数内容,它对应函数的message参数
myEmitter.emit('someEvent', 'the event was emitted');

然后我们来看一看输出结果:

bogon:hello-nodejs luminal$ node app
the event was emitted
bogon:hello-nodejs luminal$ 

二、比较真实一点的事件例子

基于上面的例子代码,我们改改来看看一个比较真实一点的例子,代码如下:


var events = require('events');
//这个库是一个工具库,里面包含了很多工具,它也是nodejs的核心库之一
//我们可参考api:https://nodejs.org/dist/latest-v9.x/docs/api/util.html
var util = require('util');

// 定义一个Person类,这是javaScript的写法
var Person = function(name) {
    this.name = name;
}

//然后我们调用工具库里面的函数inherits
//让 Person类 继承 events.EventEmitter 事件类
util.inherits(Person, events.EventEmitter);

//新建三个Person对象
var xiaoming = new Person('xiaoming');
var xiaohua = new Person('xiaohua');
var xiaobai = new Person('xiaobai');

// 把三个Person对象 放到 数组中
var person = [xiaoming,xiaohua,xiaobai];

// forEach 循环 person数组,
// 为每个Person对象,依次绑定一个监听的函数on
person.forEach(function(person) {
    person.on('speak',function(message) {
        console.log(person.name + "说:" + message);
    })
});

//手动用代码来触发
xiaoming.emit('speak', '123');
xiaohua.emit('speak', '456');
xiaobai.emit('speak', '789');

然后我们来看一看输出结果:

bogon:hello-nodejs luminal$ node app
xiaoming说:123
xiaohua说:456
xiaobai说:789
bogon:hello-nodejs luminal$ 

三、nodejs事件总结

因为自己做过多年的java、android开发,通过上面的例子不难发现,nodejs事件无非就是三步曲,

1、新建 或 继承 事件对象。 events.EventEmitter

2、绑定、回调。on

3、触发。emit

nodejs事件的几个api的链接,方便参考:

Events | Node.js v9.11.2 Documentation

Util | Node.js v9.11.2 Documentation

Util | Node.js v9.11.2 Documentation

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

被开发耽误的大厨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值