Node.js EventTarget 对比 DOM EventTarge


Node.js EventTargetEventTarget Web API 之间有两个主要区别:

  1. 尽管 DOM EventTarget 实例可能是分层的,但 Node.js 中没有层次和事件传播的概念。 也就是说,调度到 EventTarget 的事件不会通过嵌套目标对象的层次结构传播,这些目标对象可能每个都有自己的事件句柄集。
  2. 在 Node.js EventTarget 中,如果事件监听器是异步的函数或者返回 Promise,并且返回的 Promise 拒绝,则该拒绝会被自动捕获并按照同步抛出的监听器的方式处理(详见 EventTarget 错误处理)。

There are two key differences between the Node.js EventTarget and the EventTarget Web API:

  1. Whereas DOM EventTarget instances may be hierarchical, there is no concept of hierarchy and event propagation in Node.js. That is, an event dispatched to an EventTarget does not propagate through a hierarchy of nested target objects that may each have their own set of handlers for the event.
  2. In the Node.js EventTarget, if an event listener is an async function or returns a Promise, and the returned Promise rejects, the rejection is automatically captured and handled the same way as a listener that throws synchronously (see EventTarget error handling for details).