nodejs-EventEmitter

本文深入探讨了JavaScript中的事件监听机制,包括addListener、on、once、removeListener和removeAllListeners等方法的使用,同时展示了如何利用事件驱动进行文件读写操作。文章还介绍了流的概念和管道流的应用,通过实例演示了如何高效地处理输入输出任务。
addListener(event, listener)
为指定事件添加一个监听器到监听器数组的尾部。
on(event, listener)
为指定事件注册一个监听器,接受一个字符串 event 和一个回调函数。

   
  1. server.on('connection', function (stream) {
  2. console.log('someone connected!');
  3. });
once(event, listener)
为指定事件注册一个单次监听器,即 监听器最多只会触发一次,触发后立刻解除该监听器。
removeListener(event, listener)
移除指定事件的某个监听器,监听器 必须是该事件已经注册过的监听器。
  • event - 字符串,事件名称

  • listener - 处理事件函数

从指定监听器数组中删除一个监听器。需要注意的是,此操作将会改变处于被删监听器之后的那些监听器的索引。

removeAllListeners([event])
移除所有事件的所有监听器, 如果指定事件,则移除指定事件的所有监听器。
setMaxListeners(n)
默认情况下, EventEmitters 如果你添加的监听器超过 10 个就会输出警告信息。 setMaxListeners 函数用于提高监听器的默认限制的数量。
listeners(event)
返回指定事件的监听器数组。
emit(event, [arg1], [arg2], [...])
按参数的顺序执行每个监听器,如果事件有注册监听返回 true,否则返回 false。
listenerCount(emitter, event)
返回指定事件的监听器数量。

首先,具有某个实体功能的对象实现事件符合语义, 事件的监听和发射应该是一个对象的方法。

其次 JavaScript 的对象机制是基于原型的,支持 部分多重继承,继承 EventEmitter 不会打乱对象原有的继承关系。

写入流



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
var events = require( 'events' );
var eventEmitter = new events.EventEmitter();
var connectHandler = function connected() {
    console.log( '连接成功。' );
}
 
var test2 = function connected2(){
         console.log( '数据连接成功!' );
     }
var test1 = function conect(){
     console.log( 'this is a test1' );
}
eventEmitter.on( 'con' , connectHandler);
eventEmitter.on( 'con' , test2);
eventEmitter.on( 'con' , test1);
  eventEmitter.emit( 'con' );
  console.log( "程序执行完毕。" );

管道流

1
2
3
4
5
6
7
8
9
10
11
12
13
var fs = require( "fs" );
 
// 创建一个可读流
var readerStream = fs.createReadStream( 'input.txt' );
 
// 创建一个可写流
var writerStream = fs.createWriteStream( 'output.txt' );
 
// 管道读写操作
// 读取 input.txt 文件内容,并将内容写入到 output.txt 文件中
readerStream.pipe(writerStream);
 
console.log( "程序执行完毕" );











转载于:https://www.cnblogs.com/weloveshare/p/5297928.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值