您的位置:首页 > Web前端 > Node.js

Node.js事件机制

2017-07-03 16:13 567 查看
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 和 emit。on 函数用于绑定事件函数,emit 属性用于触发一个事件。接下来我们来具体看下
EventEmitter 的属性介绍。

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

removeListener(event,
listener)

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

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

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

emit(event, [arg1], [arg2], [...])

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

按参数的顺序执行每个监听器,如果事件有注册监听返回 true,否则返回 false。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息