nodejs eventemitter,Node事件驱动Events模块提供了哪些方法?
本文将带您浏览Node中的事件,并讨论事件驱动程序和EventEmitter类。希望对你有帮助!
node.js速度课程简介:进入学习
Nodejs 是单进程单线程应用程序,但是因为 V8 引擎提供的异步执行回调接口,通过这些接口可以处理大量的并发,所以性能非常高。
Node.js几乎每个API都支持回调函数。
基本上Node.js的所有事件机制都是由设计模式中的observer模式实现的。
Node.js单线程类似于进入while(true)事件循环,直到没有事件观察器退出。每个异步事件都会生成一个事件观察器,如果事件发生,就会调用这个回调函数。
事件驱动程序
Node.js使用事件驱动模型。当web服务器收到请求时,它会关闭并处理请求,然后为下一个web请求提供服务。
当请求完成时,它被放回处理队列,当它到达队列的开始时,结果被返回给用户。
这种模型非常高效且可伸缩,因为web服务器总是接受请求而不等待任何读写操作。(这也称为非阻塞IO或事件驱动IO)
在事件驱动模型中,会生成一个主循环来监听事件,当检测到事件时会触发一个回调函数。
Node.js有许多内置事件。我们可以通过引入events模块并实例化EventEmitter类来绑定和监视事件,如下例所示:
//介绍事件模块
var events=require( events );
//创建eventEmitter对象
var eventEmitter=新事件。event emitter();下列程序绑定事件处理程序:
//绑定事件及其处理程序
eventEmitter.on(eventName ,eventHandler);我们可以通过程序触发事件:
//触发事件
event emitter . emit( event name );
实例
使用以下代码创建index.js文件:
//引入fs模块
var fs=require( fs );
//介绍事件模块
var events=require( events );
//创建一个对象
var ee=新事件。event emitter();
//绑定事件及其处理程序
ee.on(res ,function (data) {
console . log( RES-1 );
console.log(数据);
});
ee.on(res ,function () {
console . log( RES-2 );
});
fs.readFile(hello.txt ,{flag:r ,编码: utf-8},function(err,data){
如果(错误){
Console.log(读取错误: err );
}否则{
Console.log(读取成功:数据);
//触发res事件
ee.emit(res ,data);
}
})接下来让我们执行上面的代码:
EventEmitter 类
事件模块仅提供一个对象:事件。event emitter event emitter的核心是事件触发和事件监听器函数的封装。
您可以传递require( events );以访问该模块。
//介绍事件模块
var events=require( events );
//创建eventEmitter对象
var eventEmitter=新事件。event emitter();如果在实例化过程中出现错误,EventEmitter对象将触发错误事件。添加newListener时,将触发NewListener事件,移除侦听器时,将触发removeListener事件。
让我们用一个简单的例子来说明EventEmitter的用法:
//event.js文件
var event emitter=require(" events ")。EventEmitter
var event=new event emitter();
event.on(some_event ,函数(){
Console.log(由some _ event事件触发);
});
setTimeout(function() {
event . emit( some _ event );
}, 1000);执行结果如下:
运行此代码后,控制台在1秒钟后输出some_event 事件触发。原理是event对象注册一个事件some_event的监听器,然后我们通过setTimeout在1000毫秒后将事件some_event发送给event对象,这个时候就会调用some_event的监听器。
$ node event.js
Some_event事件触发一个EventEmitter。每个事件由一个事件名称和几个参数组成。事件名是一个字符串,通常表达一定的语义。EventEmitter为每个事件支持几个事件侦听器。
当一个事件被触发时,注册到该事件的事件侦听器被依次调用,事件参数作为回调函数参数传递。
让我们用下面的例子来解释这个过程:
//event.js文件
var events=require( events );
var发射器=新事件。event emitter();
emitter.on(someEvent ,function(arg1,arg2) {
console.log(listener1 ,arg1,arg 2);
});
emitter.on(someEvent ,function(arg1,arg2) {
console.log(listener2 ,arg1,arg 2);
});
Emitter.emit(someEvent , arg1参数, arg2参数);执行上面的代码,运行结果如下:
$ node event.js
Listener1 arg1参数arg2参数
Listener2 arg1参数arg2参数在上面的例子中,emitter为事件someEvent注册了两个事件监听器,然后触发了someEvent事件。
在运行结果中,我们可以看到两个事件监听器回调函数被相继调用。这是EventEmitter最简单的用法。
EventEmitter提供了几个属性,比如on和emit。on函数用于绑定事件函数,emit属性用于触发事件。
更多关于node的信息,请访问:nodejs教程!以上是讲Node.js中事件驱动和EventEmitter类的细节请关注我们的其他相关文章了解更多!
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。