Node.js事件驱动编程

本文概述

  • 事件驱动编程
  • 事件和回调之间的区别
  • Node.js事件示例
在Node.js应用程序中, 事件和回调概念用于提供并发性。由于Node.js应用程序是单线程的, Node js的每个API都是异步的。因此, 它使用异步功能来维护并发。节点使用观察者模式。节点线程保持事件循环, 并在完成任何任务后触发相应的事件, 该事件表示要执行事件监听器。
事件驱动编程 Node.js使用事件驱动的编程。这意味着, 一旦Node启动其服务器, 它就简单地初始化其变量, 声明函数, 然后仅等待事件发生。这是与其他类似技术相比Node.js如此之快的原因之一。
事件驱动的应用程序中有一个主循环, 它侦听事件, 然后在检测到其中一个事件时触发回调函数。
Node.js事件驱动编程

文章图片
事件和回调之间的区别 尽管事件和回调看起来很相似, 但是不同之处在于, 当异步函数返回其结果时, 回调函数将被调用, 此时事件处理将在观察者模式下进行。每当触发事件时, 其侦听器功能就会开始执行。 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事件示例 【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事件驱动编程

文章图片

    推荐阅读