众所周知,node.js架构采用的是异步,事件模式机制,来提高服务器性能,那么你了解node.js的事件模式是怎么去设计的吗? 接下来将带你初步了解node.js事件机制和在你的程序中编写事件:
首先应该先了解EventEmitter模型。它可以发送一个事件以及让消费者订阅感兴趣的事件。我们可以把它看成是向一个异步函数进行回调传递模式的扩展。特别是,当需要进行多次回调时,EventEmitter会更显优势。
例如,有一个调用者向远程服务器发送了一个“列出文件”的请求。你可能想对返回结果进行分组,对每一个分组进行一次回调处理。EventEmitter模型可以让你在每一个分组上发送“文件”回调,当全部操作完成时进行“结束”处理。
使用EventEmitter时,只需设置好相关事件和参数。
var EventEmitter = require('events').EventEmitter;
var util = require('util');
function MyClass() {
if (!(this instanceof MyClass)) return new MyClass();
EventEmitter.call(this);
var self = this;
setTimeout(function timeoutCb() {
self.emit('myEvent', 'hello world', 42);
}, 1000);
}
util.inherits(MyClass, EventEmitter);
MyClass构造函数创建了一个时间触发器,触发延时为1s,触发事件为myEvent。要使用相关事件,需要执行on()方法:
var myObj = new MyClass();
var start = Date.now();
myObj.on('myEvent', function myEventCb(str, num) {
console.log('myEvent triggered', str, num, Date.now() - start);
});
这里要注意的是,订阅的EventEmitter事件虽然是异步事件,但当时间触发时,监听方的动作是会同步的。因此如果上述myEvent事件有10个监听者,所有的监听会被按次序调用而不用等候事件的循环。
如果EventEmitter的一个子类生成了一个emit(‘error’)事件,但是无任何的监听方对此进行订阅,那么EventEmitter基类会抛出一个异常,从而导致当执行process对象时触发uncaughtException事件。
好了,通过上面的对事件机制的理解及代码实例,你已经学会了如何在node.js中去写一个我们自己的事件,已经如果去捕获相关事件去处理逻辑
分享到:
相关推荐
Node.js的核心优势在于它的非阻塞I/O模型和事件驱动架构,这使得Node.js特别适用于构建高性能、可扩展的网络应用。 #### 二、Node.js的特性 1. **非阻塞I/O模型**:传统的服务器处理客户端请求时,通常会阻塞等待I...
2. **事件驱动模型**:Node.js的核心设计之一就是事件驱动模型。它通过监听和处理各种事件,如网络连接、数据读写等,实现高效并发处理。这种模型减少了不必要的线程切换,提高了系统性能。 3. **异步编程**:Node....
Node.js是由Ryan Dahl在2009年创建的,它基于Google的V8 JavaScript引擎,以其异步I/O模型和事件驱动架构而著名。Node.js使得JavaScript能够在服务器端运行,打破了JavaScript只能用于浏览器的传统限制,极大地扩展...
Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node ...
在Node.js这样的JavaScript平台上应用DDD,可以利用其非阻塞I/O和事件驱动的特性,构建高性能、可扩展的后端系统。 首先,我们需要理解领域驱动设计的基本概念。DDD将软件开发的核心聚焦于业务领域,通过识别业务...
Node.js以其独特的非阻塞I/O模型和事件驱动架构,在现代网络应用开发领域占据了一席之地。无论是构建简单的Web服务器还是复杂的实时通信系统,Node.js都能够提供强大的支持。随着技术的不断发展和完善,Node.js的...
它采用事件驱动、非阻塞I/O模型,这使得Node.js轻量且高效,非常适合数据密集型实时应用。在架构上,Node.js与EventMachine或Twisted等框架相似,但其核心区别在于采用了CommonJS模块系统,这为开发者提供了更加灵活...
Node.js的核心设计理念在于使用非阻塞I/O和事件驱动模型,使其在处理高并发请求时表现出色。本篇文章将深入探讨Node.js的源码,解析其架构及运行原理。 一、事件循环(Event Loop) Node.js的运行机制离不开事件循环...
**Node.js介绍** Node.js是一个基于Chrome V8引擎的...以上就是关于“Node.js-一个使用node.js构建无服务器平台的实验”的详细解析,涵盖了从理论知识到实践操作的多个层面,帮助理解Node.js在无服务器架构中的应用。
Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node ...
Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node ...
Node.js的非阻塞I/O模型和事件驱动特性使其特别适合构建高并发、响应快速的服务。在Serverless框架下,如AWS的Lambda、Azure的Functions或Google Cloud Functions等,Node.js被广泛支持,开发者可以轻松部署和执行...
Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node ...
Node.js 的非阻塞I/O模型和事件驱动架构使其在以下几个方面展现出明显的优势: 1. **高性能**:由于采用了非阻塞I/O模型,Node.js能够高效地处理大量并发连接,这对于实时性要求高的应用尤为重要。 2. **统一的编程...
Node.js的核心特点在于其事件驱动、非阻塞I/O模型,这使得它在处理高并发请求时表现出色,尤其适合数据密集型的实时应用。 1. 事件驱动模型 事件驱动模型是Node.js的基础。在传统的多线程模型中,每个连接都需要一...
Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node ...
Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node ...
Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node ...
Node.js的特点之一是事件驱动和非阻塞I/O模型,这使得它非常适合处理大量并发连接,从而在构建实时应用程序如在线游戏、聊天应用以及实时通讯服务时表现卓越。此外,Node.js使用了模块化的架构,通过npm(Node ...