This is a general purpose class to build on. It is inspired by the node.js EventEmitter class. See https://nodejs.org/api/events.html.
emit()
EventEmitter$emit(eventName, ...)
on()
EventEmitter$on(eventName, listener)
addListener()
EventEmitter$addListener(eventName, listener)
once()
EventEmitter$once(eventName, listener)
listenerCount()
EventEmitter$listenerCount(eventName)
eventNames()
EventEmitter$eventNames()
rawListeners()
EventEmitter$rawListeners(eventName)
listeners()
EventEmitter$listeners(eventName)
clone()
The objects of this class are cloneable with this method.
EventEmitter$clone(deep = FALSE)
deep
Whether to make a deep clone.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 | myEmitter <- EventEmitter$new()
myEmitter$on("event",
function() {
message("an event occured!")
}
)
myEmitter$emit("event")
# The listener is still called when "event" fires:
myEmitter$emit("event")
# A listener can be registered once:
myEmitter$once("event",
function() {
message("this listener is called only once")
}
)
# This new listener will be removed when called.
myEmitter$emit("event")
# There is now only one listener:
myEmitter$emit("event")
# An error in a listener will throw an error in R.
myEmitter$on("event", function(...) stop("An error in a listener"))
# Throw an error:
## Not run:
myEmitter$emit("event")
## End(Not run)
# You can catch an error with a special "error" event that is
# always emitted when an error occured in a listener:
myEmitter$on("error", function(e) cat(conditionMessage(e)))
myEmitter$emit("event")
# As in the node.js class, a "newListener" event is emitted
# before each new listener registration.
# The "newListener" event passes two arguments to its listener(s):
# `eventName` and `listener`.
myEmitter <- EventEmitter$new()
# Use once here to avoid infinite recursion:
myEmitter$once("newListener", function(eventName, listener) {
if(eventName == "event") {
myEmitter$on("event", function(...) cat("B"))
}
})
myEmitter$on("event", function(...) cat("A"))
myEmitter$emit("event") # BA
# The listener attached to the "newListener" event has been
# unregistered and is no more called:
myEmitter$on("event", function(...) cat("C"))
myEmitter$emit("event") # BAC
# Get the number of listeners for an event:
myEmitter$listenerCount("event")
# Get the event names which have been registered:
myEmitter$eventNames()
|
Add the following code to your website.
For more information on customizing the embed code, read Embedding Snippets.