Node.js 事件

Node.js 是非常适合于事件驱动的应用程序。


Node.js 中的事件

计算机上的每一个动作都是一个事件。例如建立连接或打开文件。

Node.js 中的对象可以触发事件,就像 readStream 对象在打开和关闭文件时触发事件一样:

实例
  1. var fs = require('fs');
  2. var rs = fs.createReadStream('./demofile.txt');
  3. rs.on('open', function () {
  4. console.log('The file is open');
  5. });

事件模型

Node.js 有一个名为 “Events” 的内置模块,您可以在其中创建、触发和监听自己的事件。

要引用内置事件模块,请使用 require() 方法。此外,所有事件属性和方法都是一个 EventEmitter 对象的实例。要能够访问这些属性和方法,请创建 EventEmitter 对象:

  1. var events = require('events');
  2. var eventEmitter = new events.EventEmitter();

EventEmitter 对象

您可以使用 EventEmitter 对象为自己的事件分配事件处理程序。

在下面的示例中,我们创建了一个函数,该函数将在触发 "scream" 事件时执行。

要触发事件,请使用 emit() 方法。

实例
  1. var events = require('events');
  2. var eventEmitter = new events.EventEmitter();
  3. //Create an event handler:
  4. var myEventHandler = function () {
  5. console.log('I hear a scream!');
  6. }
  7. //Assign the event handler to an event:
  8. eventEmitter.on('scream', myEventHandler);
  9. //Fire the 'scream' event:
  10. eventEmitter.emit('scream');