node概念笔记之eventemitter

1、产生事件分发的对象都是eventemitter的实例

2、events模块只提供一个对象events.EventEmitter,核心就是事件触发和事件监听功能的封装

引入方式  

//引入events模块
var events = require(‘events‘);
//创建eventEmitter对象
var eventEmitter = new events.EventEmitter();

EventEmitter对象如果在实例化时发生错误,会触发error事件,当添加新的监听器时newListener事件触发,移除时removeListener事件被触发

//event.js文件
var EventEmitter = require(‘events‘).EventEmitter;
var event = new EventEemitter();
event.on(‘some_event‘,function(){
   console.log(‘some_event 事件触发‘)
});
setTimeOut(function(){
    event.emit(‘some_event‘);
},1000)

一秒后触发some_event,然后监听到这个事件的分发

支持若干事件监听器,顺序执行,事件参数作为会掉函数的参数传递

var events = require(‘events‘);
var emitter = new events.EventEmitter();
emitter.on(‘someEvent‘,function(arg1,arg2){
   console.log(‘listener1‘,arg1,arg2);
});
emitter.on(‘someEvent‘,function(arg1,arg2){
   console.log(‘listener2‘,arg1,arg2);
});
emitter.emit(‘someEvent‘,arg1,arg2);

下面是是EventEmitter的属性介绍

1、addListener(event,listener)

2、on(event,listener)//回调函数

3、once,单次事件监听,触发后立即解除

4、removeListener

5、removeAllListeners

6、setMaxListeners

7、listeners返回执行事件的监听器数组

8、emit,按参数执行每个监听器

实例

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执行‘)
}
eventEmitter.addListener(‘connect‘,listener1);

eventEmitter.addListener(‘connect‘,listener2);

var eventListeners = require(‘events‘).EventEmitter.EventEmitterCount(eventEmitter,‘connect‘);
console.log(evnetListeners+‘个监听器监听连接事件‘);

eventEmitter.emit(‘connect‘);

// 移除监绑定的 listener1 函数
eventEmitter.removeListener(‘connection‘, listener1);
console.log("listener1 不再受监听。");

// 触发连接事件
eventEmitter.emit(‘connection‘);

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

console.log("程序执行完毕。");

error事件

继承EventEmitter

时间: 2024-11-10 01:11:01

node概念笔记之eventemitter的相关文章

node 使用笔记

1 安装 buffertools 因为使用mjpeg-proxy的关系,需要编译buffertools中的C++代码文件,怎奈何一直出错. make: Entering directory `/srv/node/SparkCore-WebApp/node_modules/buffertools/build' CXX(target) Release/obj.target/buffertools/buffertools.o ../buffertools.cc: In member function

Node.js笔记(0003)---Express框架Router模块学习笔记

这段时间一直有在看Express框架的API,最近刚看到Router,以下是我认为需要注意的地方: Router模块中有一个param方法,刚开始看得有点模糊,官网大概是这么描述的: Map logic to route parameters. 大概意思就是路由参数的映射逻辑 这个可能一时半会也不明白其作用,尤其是不知道get和param的执行顺序 再看看源码里面的介绍: Map the given param placeholder `name`(s) to the given callbac

node.js笔记——模块的开发

模块是什么? 简单来说模块是用来将实现某个功能的代码进行封装以便在其他项目中通过简单引入的方式实现模块中封装的功能的一个东西!!(我更想管他叫小程序). 模块的引入 模块的引入使用reqiure()函数来实现例如引入http模块 var h = require("http"); 这里需要注意的是require()加载函数可以加载指定的js文件,当引入的不是某个js文件而是一段没有扩展名的字符时,默认node.js会加载当前根目录下的node_modules文件夹下面的文件夹里的文件 并

node.js笔记——文件之间的引入

node.js的基础语法就是JavaScript的语法,所以对于懂得javascript的同学来说要容易一些,至于环境的配置也要相对简单很多,可以访问官方文档进行安装.这里分享一下我在学习中总结的一些东西,这是第一篇先来说说文件之间如何进行引入并互相使用变量及函数. 码缘»node.js笔记——文件之间的引入 http://www.ithome.ren/2017/05/31/node-js1.html

Node.js笔记(0001)---connect模块

首先来看这一部分代码 1 /** 2 * Created by bsn on 14-7-1. 3 */ 4 var connect = require('connect'); 5 6 var app = connect(); 7 function hello(req, res, next) { 8 console.log(req.url); 9 res.end('hello bsn'); 10 next(); 11 } 12 13 function helloAgain(req, res) {

[转载] Node.js 笔记(一) nodejs、npm、express安装

感谢原作者: http://blog.csdn.net/haidaochen/article/details/7257655 Windows平台下的node.js安装 直接去nodejs的官网http://nodejs.org/上下载nodejs安装程序,双击安装就可以了 测试安装是否成功: 在命令行输入 node –v 应该可以查看到当前安装的nodejs版本号 简单的例子写一段简短的代码,保存为helloworld.js,大致看下nodejs是怎么用的. 如下:该代码主要是创建一个http服

node.js笔记

最近在读<Node入门经典>, 之前没有做笔记, 今天开始把看过自己又写了的代码放这里以免忘记. express var express = require('express') var app = express() app.get('/', function (req, res) { res.send('Hello World') }) app.listen(3000) route var http = require('http'); var url = require('url');

Node.js 教程 05 - EventEmitter(事件监听/发射器 )

目录: 前言 Node.js事件驱动介绍 Node.js事件 注册并发射自定义Node.js事件 EventEmitter介绍 EventEmitter常用的API error事件 继承EventEmitter 前言: 今天事儿太多了,没有发太多的东西.不好意思了各位. 本篇主要介绍Node.js中的事件驱动,至于Node.js事件概念的东西,太多了. 本系列课程主要抱着的理念就是,让大家慢慢的入门,我也尽量写的简单一点. 所以呢,本文事件驱动,大家的目标应该是:理解Node.js的事件驱动.会

node学习笔记

1.Node,可以让javascript运行在服务器端的平台. 是一个为实时Web(Real-time Web)应用开发而诞生的平台.充分考虑了实时响应,超大规模数据要求下架构. 2.摒弃了传统平台依靠多线程来实现高并发的设计思路,而采用了单线程.异步式I/O,事件驱动式的程序设计模型. 不仅带来了巨大的性能提升,还减少了多线程程序设计复杂性,进而提高了开发效率. 3.单线程事件驱动的异步I/O. 单线程事件驱动的异步I/O比传统的多线程阻塞式I/O到底好在哪里:简而言这,异步式I/O少了多线程