Add EventSource class.
This commit is contained in:
parent
235149c325
commit
bd6c2b5114
27
source/engine/core/eventsource.js
Normal file
27
source/engine/core/eventsource.js
Normal file
@ -0,0 +1,27 @@
|
||||
export class EventSource
|
||||
{
|
||||
constructor ()
|
||||
{
|
||||
this.eventListeners = new Map ();
|
||||
}
|
||||
|
||||
AddEventListener (name, listener)
|
||||
{
|
||||
if (!this.eventListeners.has (name)) {
|
||||
this.eventListeners.set (name, []);
|
||||
}
|
||||
let listeners = this.eventListeners.get (name);
|
||||
listeners.push (listener);
|
||||
}
|
||||
|
||||
NotifyEventListeners (name, ...args)
|
||||
{
|
||||
if (!this.eventListeners.has (name)) {
|
||||
return;
|
||||
}
|
||||
let listeners = this.eventListeners.get (name);
|
||||
for (let listener of listeners) {
|
||||
listener (...args);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -1,4 +1,5 @@
|
||||
import { IsDefined, ValueOrDefault, CopyObjectAttributes, IsObjectEmpty, EscapeHtmlChars } from './core/core.js';
|
||||
import { EventSource } from './core/eventsource.js';
|
||||
import { TaskRunner, RunTaskAsync, RunTasks, RunTasksBatch, WaitWhile } from './core/taskrunner.js';
|
||||
import { Exporter } from './export/exporter.js';
|
||||
import { Exporter3dm } from './export/exporter3dm.js';
|
||||
@ -76,6 +77,7 @@ export {
|
||||
CopyObjectAttributes,
|
||||
IsObjectEmpty,
|
||||
EscapeHtmlChars,
|
||||
EventSource,
|
||||
TaskRunner,
|
||||
RunTaskAsync,
|
||||
RunTasks,
|
||||
|
||||
@ -46,6 +46,24 @@ describe ('Core', function () {
|
||||
OV.CopyObjectAttributes (src, dest3);
|
||||
assert.deepStrictEqual (dest3, {a : null, b : null, c : 6});
|
||||
});
|
||||
|
||||
it ('Event Source', function () {
|
||||
let es = new OV.EventSource ();
|
||||
let sumValues = 0;
|
||||
es.AddEventListener ('first_event', (x) => {
|
||||
sumValues += x;
|
||||
});
|
||||
es.AddEventListener ('first_event', (x) => {
|
||||
sumValues += 2 * x;
|
||||
});
|
||||
es.AddEventListener ('second_event', (x, y) => {
|
||||
sumValues += 3 * x;
|
||||
sumValues += 3 * y;
|
||||
});
|
||||
es.NotifyEventListeners ('first_event', 5);
|
||||
es.NotifyEventListeners ('second_event', 10, 15);
|
||||
assert.strictEqual (sumValues, 90);
|
||||
});
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
Loading…
Reference in New Issue
Block a user