node events事件循环

原创 2016年08月29日 15:35:01

引入event模块:

/*引入模块方式一*/
//引入events模块
var events = require('events');
//创建eventEmitter
var eventEmitter = new  events.EventEmitter();


/*引入模块方式二*/
var EventEmitter = require('events').EventEmitter;
var event = new  EventEmitter();
event.on('some_event',function(){
    console.log('some_event事件触发');
});
setTimeout(function(){
    event.emit('some_event');
},1000);

一个node事件循环的入门例子:

// 引入events模块
var events = require("events");
// 创建 eventEmitter 对象
var eventEmitter = new events.EventEmitter();
//绑定事件及事件的处理程序
var connectHandler = function connected () {
    console.log('连接成功。');
    //触发事件
    eventEmitter.emit('data_received');
}

//绑定事件及事件的处理程序
eventEmitter.on('connection',connectHandler);

//使用匿名函数绑定data_received事件
eventEmitter.on('data_received',function () {
    console.log('数据接收成功。');
});

//触发connection事件
eventEmitter.emit('connection');
console.log('程序执行完毕。');

打印结果:

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

参数的传递:

/*event参数*/
var EventEmitter = require('events').EventEmitter;
var event = new  EventEmitter();
event.on('someEvent',function(arg1,arg2){
    console.log('listener1',arg1,arg2);
});
event.on('someEvent', function(arg1, arg2) {
    console.log('listener2', arg1, arg2);
});
event.emit('someEvent','参数1','参数2');

// addListener

var events = require('events');
var eventEmitter = new events.EventEmitter();

// 监听器 #1
var listener1 = function listener1() {
    console.log('监听器 listener1 执行。');
}
// 监听器 #2
var listener2 = function listener2() {
    console.log('监听器 listener2 执行。');
}
// 绑定 connection 事件,处理函数为 listener1
eventEmitter.addListener('connection',listener1);
// 绑定 connection 事件,处理函数为 listener2
eventEmitter.on('connection', listener2);

var eventListeners = require('events').EventEmitter.listenerCount(eventEmitter,'connection');
console.log(eventListeners + " 个监听器监听连接事件。");

// 处理 connection 事件
eventEmitter.emit('connection');

// 移除监绑定的 listener1 函数
eventEmitter.removeListener('connection', listener1);
console.log("listener1 不再受监听。");
版权声明:本文为博主原创文章,未经博主允许不得转载。

Node.js学习1:事件循环探究

Node.js的一大特性就是:异步式I/O与事件驱动的架构设计,单线程,在执行过程中会维护一个事件队列,程序在执行时进入事件循环等待下一个事件的到来,每个异步I/O事件在完成后会被推送到事件队列,等待...
  • hellobeifeng
  • hellobeifeng
  • 2014年08月14日 10:22
  • 1001

Node.js events模块(一)事件循环

简介 Node.js 是单进程单线程应用程序,但是通过事件和回调支持并发,所以性能非常高。 Node.js 的每一个 API 都是异步的,并作为一个独立线程运行,使用异步函数调用,并处理并...
  • u011127019
  • u011127019
  • 2016年09月01日 14:25
  • 1419

Node.js Events模块

在Node.js中,很多对象都会发出事件。比如,fs.readStream打开文件时会发出一个事件。所有发出事件的对象都是events.EventEmitter的实例,可以通过require("eve...
  • xy2204
  • xy2204
  • 2015年07月21日 14:52
  • 1607

Node JS体系架构 - 单线程事件循环

原文地址:http://www.journaldev.com/7462/node-js-architecture-single-threaded-event-loop 原作者:RAMBABU POS...
  • lm278858445
  • lm278858445
  • 2016年12月08日 13:43
  • 779

Nodejs源码的阅读-事件循环的建立

Nodejs源码的阅读-事件循环的建立   解读基于node V0.2.0   我们知道nodejs在c++这一层面主要的工作是建立事件循环,随后加载命令行的js文件交给V8执行,同时启动循环。所有异...
  • sxyizhiren
  • sxyizhiren
  • 2014年02月06日 17:10
  • 2054

Qt事件循环_Another Look at Events(再谈Events)

转载:http://www.qtcn.org/bbs/read-htm-tid-31383.html     最近在学习Qt事件处理的时候发现一篇很不错的文章,是2004年季刊的一篇文章,网上有这篇...
  • u012199908
  • u012199908
  • 2018年02月01日 09:52
  • 11

NodeJs——(5)与 events 事件模块

①events模块只提供了一个对象,events.EventEmitter 他的核心是 事件发射 和 事件监听 功能   每个事件由一个事件名(用于标识事件),和多个参数组成。   事件名:...
  • qq20004604
  • qq20004604
  • 2016年06月12日 15:49
  • 423

Nodejs源码解析之events

Nodejs中的events模块是很常见的模块,其实现了事件注册,通知等功能,是观察者模式的实现。其使用很简单,实例代码如下:// 导入events模块 var events = require('e...
  • leoleocs
  • leoleocs
  • 2015年12月04日 09:27
  • 2071

Node.js机制及原理理解初步

node.js是单线程。好处就是1)简单2)高性能,避免了频繁的线程切换开销3)占用资源小,因为是单线程,在大负荷情况下,对内存占用仍然很低3)线程安全,没有加锁、解锁、死锁这些问题坏处就是如何解决高...
  • leftfist
  • leftfist
  • 2014年12月16日 19:48
  • 30867

node events学习

在nodejs中有一个EventEmitter类,目的是实现各种事件的event处理。当需要指定绑定事件时,可以使用EventEmitter类的on方法或addListener方法.这两个方法实现原理...
  • zhanglong1229
  • zhanglong1229
  • 2016年12月16日 11:10
  • 147
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:node events事件循环
举报原因:
原因补充:

(最多只允许输入30个字)