nodejs的事件EventEmitter

直接上代码:

// 得到EventEmitter对象
var EventEmitter = require('events').EventEmitter;
var eventEmitter = new EventEmitter();

var EVENT_NAME = 'some_event'; // 事件名

// **********************************************************
// 注册一个事件some_event
// **********************************************************
// 回调函数
var callback = function(arg1, arg2){
    console.log(EVENT_NAME + ' listener1' + arg1 + ' ' + arg2);
};
// 参数1:事件名,参数2:回调函数
eventEmitter.on(EVENT_NAME, callback);

// 单次事件,监听器最多只会触发一次,触发后立刻解除该监听器
eventEmitter.once(EVENT_NAME,function(arg1, arg2){
    console.log(EVENT_NAME + ' listener2' + arg1 + ' ' + arg2);
});

// **********************************************************
// 利用延时函数,触发事件
// **********************************************************
setTimeout(function(){
    eventEmitter.emit(EVENT_NAME, 'One', 1);
},1000);

setTimeout(function(){
    eventEmitter.emit(EVENT_NAME, 'Two', 2);
},2000);

// 移除事件
setTimeout(function(){
  console.log('remove');
  eventEmitter.removeListener(EVENT_NAME, callback);// 移除事件指定的监听器
  eventEmitter.removeAllListeners(EVENT_NAME);// 移除事件的所有监听器
},3000);

// error 事件:EventEmitter 规定如果没有响 应的监听器,Node.js 会把它当作异常,退出程序并打印调用栈。
// 所以一般要为会发射 error 事件的对象设置监听器,避免遇到错误后整个程序崩溃

输出结果:

首先我们require了事件模块,定义了时间对象,然后注册了一个事件及其回调。

最后,我们利用延时函数来控制时间的触发。

可以看到,注册的单次事件触发一次就会被移除。

而普通事件,每次都会被触发。

时间: 2024-11-05 15:17:39

nodejs的事件EventEmitter的相关文章

nodejs 事件EventEmitter

index.js: // 引入 events 模块 var events = require('events'); //处理函数要写在调用前 var eventHandler = function(){ console.log("事件1"); }; //创建事件 var eventEmitter = new events.EventEmitter(); //事件监听 eventEmitter.on('eventName', eventHandler); //事件监听,匿名函数 even

nodejs的事件

1    认识nodejs的事件 //声明事件对象 var EventEmitter = require('events').EventEmitter;var event = new EventEmitter(); //注册事件,new event就是事件名 event.on('new event',function(){ console.log('this is a evnet');}); //三秒后触发事件. setTimeout(function(){ event.emit('new ev

nodejs基础 -- 事件循环

Node.js 事件循环 Node.js 是单进程单线程应用程序,但是通过事件和回调支持并发,所以性能非常高. Node.js 的每一个 API 都是异步的,并作为一个独立线程运行,使用异步函数调用,并处理并发. Node.js 基本上所有的事件机制都是用设计模式中观察者模式实现. Node.js 单线程类似进入一个while(true)的事件循环,直到没有事件观察者退出,每个异步事件都生成一个事件观察者,如果有事件发生就调用该回调函数. 事件驱动程序 Node.js 使用事件驱动模型,当web

nodeJS之事件events

前面的话 events模块是node的核心模块,几乎所有常用的node模块都继承了events模块,比如http.fs等.本文将详细介绍nodeJS中的事件机制 EventEmitter 多数 Node.js 核心 API 都是采用惯用的异步事件驱动架构,其中某些类型的对象(称为触发器)会周期性地触发命名事件来调用函数对象(监听器).例如,一个net.Server对象会在每次有新连接时触发一个事件:一个 fs.ReadStream 会在文件被打开时触发一个事件:一个 stream会在数据可读时触

nodejs的事件循环1

JavaScript的学习零散而庞杂,因此很多时候我们学到了一些东西,但是却没办法感受到自己的进步,甚至过了不久,就把学到的东西给忘了.为了解决自己的这个困扰,在学习的过程中,我一直试图在寻找一条核心的线索,只要我根据这条线索,我就能够一点一点的进步. 前端基础进阶正是围绕这条线索慢慢展开,而事件循环机制(Event Loop),则是这条线索的最关键的知识点.所以,我就马不停蹄的去深入的学习了事件循环机制,并总结出了这篇文章跟大家分享. 事件循环机制从整体上的告诉了我们所写的JavaScript

Node.js(十)——NodeJs事件

NodeJs的事件模块 在爬虫代码中有个on('data')事件,为什么响应的res回有一个on方法呢,那这个on做什么事情呢,要回答这些问题,要从事件模块说起,在NodeJs中不存在浏览器中的冒泡.捕获这些行为的,所以NodeJs中实现的events这个模块,里面的大多数模块都集成了这个模块, 所以events是最重要的一个模块,它只对外暴露了一个对象,就是eventImit,作用有两个分别是事件的发射,和事件的监听,两个不同的执行环节本来是毫无联系的,但是有了事件模块的支持以后,这两个环节就

nodejs 事件机制

node 事件机制 一 三种定时器 NodeJS中有三种类型的定时器:超时时间.时间间隔.即时定时器 1.超时时间:setTimeout(callback,delayMilliSeconds,[args])方法,如: setTimeout(myFunc,1000); setTimeout函数返回一个定时器对象的ID,可以在delayMilliSeconds到期前的任何时候把此ID传递给clearTimeOut()来取消时间函数. var myTimeout=setTimeout(myFunc,1

NodeJS中的事件

1 /** 2 * Created by xiwu.xxw on 2015/7/22. 3 */ 4 /** 5 * EventEmitter 的每个事件由一个事件名和若干个参数组成, 6 * 事件名是一个字符串,通常表达一定的语义. 7 * 对于每个事件,EventEmitter 支持 若干个事件监听器. 8 * 当事件发射时,注册到这个事件的事件监听器被依次调用, 9 * 事件参数作 为回调函数参数传递. 10 * @type {*|EventEmitter} 11 */ 12 //Node

nodejs 事件循环

Node.js 事件循环 Node.js 是单进程单线程应用程序,但是通过事件和回调支持并发,所以性能非常高. Node.js 的每一个 API 都是异步的,并作为一个独立线程运行,使用异步函数调用,并处理并发. Node.js 基本上所有的事件机制都是用设计模式中观察者模式实现. Node.js 单线程类似进入一个while(true)的事件循环,直到没有事件观察者退出,每个异步事件都生成一个事件观察者,如果有事件发生就调用该回调函数. 事件驱动程序 Node.js 使用事件驱动模型,当web