EventSource
pentaho.lang. EventSource
The EventSource
class is an implementation IEventSource
that can be used as mixin class for classes that emit events.
The class publicly exposes the IEventSource
interface, allowing the registration and unregistration of event listeners/observers. The ability to emit events is, however, only exposed via the protected interface, through the methods: _emit
, _emitSafe
, _emitGeneric
and _emitGenericAllAsync
. The methods _emit
and _emitSafe
are to be used with events of the Event
type. The methods _emitGeneric
and _emitGenericAllAsync
can be used with any event type and expose more control options.
To ascertain whether any listeners are registered for a certain event type and, optionally, phase, use _hasListeners
.
AMD Module
require(["pentaho/lang/EventSource"], function(EventSource) { /* code goes here */ });
Implements
Constructor
Name | Description |
---|---|
new EventSource() | This class was not designed to be constructed directly. It was designed to be used as a mixin. |
Methods
Name | Description |
---|---|
_emit(event) : pentaho.lang.Event Protected | Emits an unstructured event and returns it, unless it was canceled. |
_emitGeneric(source, eventArgs, type, phase, keyArgs) : boolean Protected | Emits an event given an arbitrary payload object, its type and phase. Returns the event payload object, unless the event is canceled. |
_emitGenericAllAsync(source, eventArgs, type, phase, keyArgs) : Promise.<<code>object > Protected | Emits an event asynchronously, given an arbitrary payload object, its type and phase, and succeeding if every listener succeeds. |
_emitSafe(event) : pentaho.lang.Event Protected | Variation of the |
_hasListeners(type, phase) : boolean Protected | Determines if there are any registrations for a given event type and, optionally, phase. |
off(typeOrHandle, observer) | Removes one registration given its handle, or all registrations of a given event type (or types) and observer (or listener function). |
on(type, observer, keyArgs) : pentaho.lang.IEventRegistrationHandle | Registers an observer (or listener function) for an event(s) of a given type(s). |
Constructor Details
new EventSource() |
---|
This class was not designed to be constructed directly. It was designed to be used as a mixin. |
Methods Details
_emit(event) : pentaho.lang.Event Protected | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
Emits an unstructured event and returns it, unless it was canceled. When this method is called, the listeners of existing registrations are notified synchronously, by priority order and then registration order, until either the event is canceled or all of the listeners have been notified. It is safe to register or unregister to/from an event type while it is being emitted. However, changes are only taken into account in subsequent emissions. If a listener function throws an error, the event processing is interrupted. No more registrations are processed and the error is passed to the caller. Source: javascript/web/pentaho/lang/EventSource.js, line 262
See also: pentaho.lang.EventSource#_emitSafe , pentaho.lang.EventSource#_emitGeneric |
_emitGeneric(source, eventArgs, type, phase, keyArgs) : boolean Protected | ||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Emits an event given an arbitrary payload object, its type and phase. Returns the event payload object, unless the event is canceled. Source: javascript/web/pentaho/lang/EventSource.js, line 318
|
_emitGenericAllAsync(source, eventArgs, type, phase, keyArgs) : Promise.<<code>object > Protected | ||||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Emits an event asynchronously, given an arbitrary payload object, its type and phase, and succeeding if every listener succeeds. Listeners are called in parallel. Returns a promise that is fulfilled or rejected with the event payload object. If any listener throws or rejects, the returned promise is rejected as well. Source: javascript/web/pentaho/lang/EventSource.js, line 440
|
_emitSafe(event) : pentaho.lang.Event Protected | ||||||||||
---|---|---|---|---|---|---|---|---|---|---|
Variation of the If an event listener throws an error, the following event listeners are still processed. Source: javascript/web/pentaho/lang/EventSource.js, line 284
See also: pentaho.lang.EventSource#_emit , pentaho.lang.EventSource#_emitGeneric |
_hasListeners(type, phase) : boolean Protected | |||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Determines if there are any registrations for a given event type and, optionally, phase. This method can be used to avoid creating expensive event objects for an event type and, optionally, phase, that don't have registrations. Source: javascript/web/pentaho/lang/EventSource.js, line 214
Examples if(this._hasListeners("click")) { var event = new Event("click", this, true); if(this._emit(event)) { // ... } } if(this._hasListeners("select")) { var event = new Event("select"); if(this._emitGeneric(this, [event], "select", "will")) { // Select ... this._emitGeneric(this, [event], "select", "finally"); } } |
off(typeOrHandle, observer) | ||
---|---|---|
Removes one registration given its handle, or all registrations of a given event type (or types) and observer (or listener function). To remove an event registration, it is sufficient to call the It is safe to unregister from an event type while it is being emitted. However, any registrations removed during the current emission will still execute. Specifying an event registration handle that has already been disposed of has no effect. Specifying an event type and observer (or listener function) that have no registrations has no effect. |
Name | Default Value | Summary |
---|---|---|
typeOrHandle : nonEmptyString | Array.<<code>nonEmptyString > | pentaho.lang.IEventRegistrationHandle | The type or types of events, or an event registration handle to dispose of. When a string, it can be a comma-separated list of event types. | |
observer : pentaho.lang.IEventObserver | pentaho.lang.EventListener | pentaho.lang.EventListenerAsync | The event observer (or listener function). Required when |
See also: pentaho.lang.IEventSource#on
on(type, observer, keyArgs) : pentaho.lang.IEventRegistrationHandle | ||||||||
---|---|---|---|---|---|---|---|---|
Registers an observer (or listener function) for an event(s) of a given type(s). Optionally, a listening priority may be specified to adjust the order by which an observer is notified, relative to other listeners. Note that if an observer is registered more than once to the same event type, a new registration is created each time and its listeners will be called once per registration. It is safe to register for an event type while it is being emitted. However, new registrations are only taken into account in subsequent emissions. When This method is compatible with the dojo/on API. |
Name | Default Value | Summary | ||||||
---|---|---|---|---|---|---|---|---|
type : nonEmptyString | Array.<<code>nonEmptyString > | The type or types of events. When a string, it can be a comma-separated list of event types. | |||||||
observer : pentaho.lang.IEventObserver | pentaho.lang.EventListener | pentaho.lang.EventListenerAsync | The event observer (or listener function). | |||||||
keyArgs : object Optional | Keyword arguments.
|
Name | Description |
---|---|
pentaho.lang.IEventRegistrationHandle | An event registration handle that can be used for later removal. |
See also: pentaho.lang.IEventSource#off