Node.js事件机制

来源:互联网 发布:tp link软件下载 编辑:程序博客网 时间:2024/05/29 12:30
node.js是单线程,,通过事件和回调来支持并发。Node.js 基本上所有的事件机制都是用设计模式中观察者模式实现。

Node.js 单线程类似进入一个while(true)的事件循环,直到没有事件观察者退出,每个异步事件都生成一个事件观察者,如果有事件发生就调用该回调函数。

这一点有点儿像开发游戏的时候触发了某一事件,,进入到回调函数中进行具体的操作,,,比如游戏物体碰撞检测之后(进入到传送门),回掉函数使其切换场景。


ar events = require('events');// 创建 eventEmitter 对象var eventEmitter = new events.EventEmitter();// 创建事件处理程序var connectHandler = function connected() {   console.log('连接成功。');     // 触发 data_received 事件    eventEmitter.emit('data_received');}// 绑定 connection 事件处理程序eventEmitter.on('connection', connectHandler); // 使用匿名函数绑定 data_received 事件eventEmitter.on('data_received', function(){   console.log('数据接收成功。');});// 触发 connection 事件 eventEmitter.emit('connection');console.log("程序执行完毕。");

执行结果:

连接成功。
数据接收成功。
程序执行完毕。


events 模块只提供了一个对象: events.EventEmitter。EventEmitter 的核心就是事件触发与事件监听器功能的封装。

我们可以通过require("events");来访问该模块。

EventEmitter 提供了多个属性,如 on 和 emiton 函数用于绑定事件函数,emit 属性用于触发一个事件。接下来我们来具体看下 EventEmitter 的属性介绍。


addListener(event, listener)
为指定事件添加一个监听器到监听器数组的尾部。

removeListener(event, listener)

移除指定事件的某个监听器,监听器必须是该事件已经注册过的监听器。

它接受两个参数,第一个是事件名称,第二个是回调函数名称。


on(event, listener)
为指定事件注册一个监听器,接受一个字符串 event 和一个回调函数。


emit(event, [arg1], [arg2], [...])
按参数的顺序执行每个监听器,如果事件有注册监听返回 true,否则返回 false。




emit(event, [arg1], [arg2], [...])
按参数的顺序执行每个监听器,如果事件有注册监听返回 true,否则返回 false。
原创粉丝点击