Published 2022-04-27

Node.js - Events

在 Node.js 应用程序中,事件和回调概念用于提供并发性。由于 Node.js 应用程序是单线程的,Node js 的每个 API 都是异步的。

因此,它使用异步函数来保持并发性。节点使用观察者模式。节点线程保持事件循环,在任何任务完成后,它会触发相应的事件,向事件侦听器函数发出执行信号。

Node.js 中的事件

var fs = require('fs')
var rs = fs.createReadStream('./demofile.txt')
rs.on('open', function () {
  console.log('The file is open')
})

事件模型

Node.js 有一个内置的模块,名为“ Events”,在这个模块中,可以创建、监听、销毁等事件。

使用 require ()方法引入events模块。此外,所有事件属性和方法都是 EventEmitter 对象的实例。

var events = require('events')
var eventEmitter = new events.EventEmitter()

事件对象

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

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

var events = require('events')
var eventEmitter = new events.EventEmitter()

//Create an event handler:
var myEventHandler = function () {
  console.log('I hear a scream!')
}

//Assign the event handler to an event:
eventEmitter.on('scream', myEventHandler)

//Fire the 'scream' event:
eventEmitter.emit('scream')