EventEmitter: R6 class to emit some event

Description Methods Examples

Description

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.

Methods

Public methods


Method emit()

Usage
EventEmitter$emit(eventName, ...)

Method on()

Usage
EventEmitter$on(eventName, listener)

Method addListener()

Usage
EventEmitter$addListener(eventName, listener)

Method once()

Usage
EventEmitter$once(eventName, listener)

Method listenerCount()

Usage
EventEmitter$listenerCount(eventName)

Method eventNames()

Usage
EventEmitter$eventNames()

Method rawListeners()

Usage
EventEmitter$rawListeners(eventName)

Method listeners()

Usage
EventEmitter$listeners(eventName)

Method clone()

The objects of this class are cloneable with this method.

Usage
EventEmitter$clone(deep = FALSE)
Arguments
deep

Whether to make a deep clone.

Examples

 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()

RLesur/crrri documentation built on March 20, 2021, 8:47 a.m.