Node.js 中 on() 和 add.listener() 函数的区别

2025年4月26日 | 阅读 4 分钟

在本文中,我们将讨论 C++ 中 on() 和 add.listener() 函数的区别。在讨论它们的区别之前,我们必须了解 on() 和 addlistener() 及其特性。

On() 函数是什么?

它通过使用 on() 方法在 Node.js 的 EventEmitter 上为指定事件添加监听器来实现。为了更好地查看代码并遵循 JavaScript 的事件处理规则,这是推荐的、更常见的注册监听器的方式。由于 on() 是此实现中 addListener() 的另一种方式,因此在使用上没有区别。但选择使用 on() 是因为它符合现代 JavaScript 事件处理的习惯,这使得对于已经熟悉事件驱动编程的人来说,它更易于理解和自然。

语法

它具有以下语法:

Add.listerner() 是什么?

addListener() 方法还用于将 EventEmitter 实例注册到 Node.js 事件监听器,并且在接收到指定事件时会激活。 AddListener() 比使用 on() 来实现相同目的的频率较低,因为 on() 是 addListener() 的别名。实际上,你会使用 on(),因为它可读且符合惯例。然而,AddListener() 是可行的,并且你会发现在一些旧应用程序中找到了它。在将事件处理器附加到 EventEmitter 对象上的事件时,这两种方法在功能上是相同的且等效的。

语法

它具有以下语法:

目的

AddListener()on() 是用于将侦听器(事件处理器)添加到 EventEmitter 实例以响应指定事件的两种可用方法。当发出事件时,侦听器将被调用的顺序基于它们被添加的顺序。

示例 1

输出

 
Hello from on()!
Hello from addListener()!   

说明

  • addListener()on() 方法都将侦听器函数附加到 'greet' 事件。
  • 当调用 emitter.emit('greet') 时,这两个侦听器都将按它们添加的顺序运行。
  • 由于两种方法都响应发出的事件,因此结果表明它们功能相似。

示例 2

输出

 
--- Emitting "start" event ---
Started event handled by on()!
Started event handled by addListener()!
--- Emitting "progress" event ---
Progress event: Step 1 handled by on()!
Progress event: Step 1 handled by addListener()!
Progress event: Step 2 handled by on()!
Progress event: Step 2 handled by addListener()!
Progress event: Step 3 handled by on()!
Progress event: Step 3 handled by addListener()!   

说明

  • 在此示例中,使用 AddListener() 和 on() 为 "start" 和 "progress" 事件添加侦听器。
  • 首先广播 'start' 事件,激活使用 on() 和 addListener() 添加的侦听器。
  • 多次发出: "progress" 事件产生了三个独立的发出,每个发出都具有不同的步骤值。如 on() 和 addListener() 侦听器所示,两种方法都能可靠地响应多个事件发出,它们每次发出事件时都会处理该事件。

结论

总而言之,Node.js 中的 on()addListener() 函数用于将事件侦听器与 EventEmitter 相关联,从而可以执行事件驱动的、响应迅速的应用程序。由于 on() 与 addListener() 同义且具有相同的功能,因此它更受欢迎且使用更多,因为它易于阅读代码,并且符合现代 JavaScript 标准。事实是,这两种机制都可以为一次性或重复性事件注册侦听器,并按照侦听器注册的顺序处理事件,以支持单个事件的多个侦听器。尽管 addListener() 函数是为了向后兼容而存在的,而 On() 由于易用性和符合现代 JavaScript 代码标准,在新项目中得到了应用。