Run results for: Observables: loops versus EventTarget2
When the “observable” pattern is implemented in JavaScript, it's practically
always done using a loop over callbacks. One problem with this approach is that
an exception in one handler will crash the entire loop. You can work around
this by wrapping the invocation in a try/catch block, but in doing so, you
silently swallow the error.
The browser provides an event dispatcher for DOM elements that runs each handler
in a separate execution context, providing a better failure mode for independent
listeners. `EventTarget` is an interface, so you can't directly instantiate
one. But you can hijack the `EventTarget` implementation from a dummy object.
This test compares multi-listener dispatches using loops and the built-in
`EventTarget`. My expectation is that the native mechanism will carry some
overhead, partly because of the bespoke execution context, and partly because of
the extra properties instantiated on each `CustomEvent` instance. This method
also has to look up events by their (string) names, rather than using direct
object reference.
See http://dean.edwards.name/weblog/2009/03/callbacks-vs-events/