个性化阅读
专注于IT技术分析

Node.js事件驱动编程

本文概述

在Node.js应用程序中, 事件和回调概念用于提供并发性。由于Node.js应用程序是单线程的, Node js的每个API都是异步的。因此, 它使用异步功能来维护并发。节点使用观察者模式。节点线程保持事件循环, 并在完成任何任务后触发相应的事件, 该事件表示要执行事件监听器。

事件驱动编程

Node.js使用事件驱动的编程。这意味着, 一旦Node启动其服务器, 它就简单地初始化其变量, 声明函数, 然后仅等待事件发生。这是与其他类似技术相比Node.js如此之快的原因之一。

事件驱动的应用程序中有一个主循环, 它侦听事件, 然后在检测到其中一个事件时触发回调函数。

Node.js事件驱动编程1

事件和回调之间的区别

尽管事件和回调看起来很相似, 但是不同之处在于, 当异步函数返回其结果时, 回调函数将被调用, 此时事件处理将在观察者模式下进行。每当触发事件时, 其侦听器功能就会开始执行。 Node.js通过事件模块和EventEmitter类提供了多个内置事件, 这些事件用于绑定事件和事件侦听器。

EventEmitter类绑定事件和事件侦听器:

// Import events module
var events = require('events');
// Create an eventEmitter object
var eventEmitter = new events.EventEmitter();

要将事件处理程序与事件绑定:

// Bind event and even handler as follows
eventEmitter.on('eventName', eventHandler);

要触发事件:

// Fire an event 
eventEmitter.emit('eventName');

Node.js事件示例

文件:main.js

// Import events module
var events = require('events');
// Create an eventEmitter object
var eventEmitter = new events.EventEmitter();

// Create an event handler as follows
var connectHandler = function connected() {
   console.log('connection succesful.');
  
   // Fire the data_received event 
   eventEmitter.emit('data_received');
}

// Bind the connection event with the handler
eventEmitter.on('connection', connectHandler);
 // Bind the data_received event with the anonymous function
eventEmitter.on('data_received', function(){
   console.log('data received succesfully.');
});
// Fire the connection event 
eventEmitter.emit('connection');
console.log("Program Ended.");

现在, 打开Node.js命令提示符并运行以下代码:

node main.js
Node.js事件驱动编程2
赞(0)
未经允许不得转载:srcmini » Node.js事件驱动编程

评论 抢沙发

评论前必须登录!