MST

星途 面试题库

面试题:Node.js事件驱动模型基础

请简要描述Node.js事件驱动模型的工作原理,并举例说明在实际开发中如何利用事件发射器(EventEmitter)来实现简单的事件监听与触发。
22.6万 热度难度
前端开发Node.js

知识考点

AI 面试

面试题答案

一键面试

Node.js事件驱动模型工作原理

  1. 事件循环(Event Loop):Node.js运行时维护一个事件循环。它不断地检查事件队列,当有事件进入队列时,事件循环会取出事件并将其交给相应的回调函数处理。
  2. 非阻塞I/O:Node.js采用非阻塞I/O操作,这意味着在执行I/O操作(如读取文件、网络请求等)时,不会阻塞主线程,而是将I/O操作交给操作系统执行,主线程继续执行后续代码。当I/O操作完成后,操作系统将结果放入事件队列,事件循环再处理该事件。
  3. 回调函数:在发起I/O操作或其他异步操作时,开发者会提供一个回调函数。当操作完成后,这个回调函数会被放入事件队列等待执行。

利用EventEmitter实现简单的事件监听与触发示例

以下是使用Node.js内置的events模块中的EventEmitter类实现简单事件监听与触发的示例代码:

const EventEmitter = require('events');

// 创建一个EventEmitter实例
const myEmitter = new EventEmitter();

// 监听事件
myEmitter.on('customEvent', function(data) {
    console.log('监听到customEvent事件,数据为:', data);
});

// 触发事件
myEmitter.emit('customEvent', { message: '这是传递的数据' });

在上述代码中:

  1. 首先引入events模块,并创建了一个EventEmitter实例myEmitter
  2. 使用myEmitter.on('eventName', callback)方法来监听名为customEvent的事件,当该事件触发时,会执行传入的回调函数。
  3. 使用myEmitter.emit('eventName', data)方法来触发customEvent事件,并传递了一个包含消息的数据对象。当事件触发时,之前监听该事件的回调函数会被执行,并接收到传递的数据。