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 { 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 { TaskRunner, RunTaskAsync, RunTasks, RunTasksBatch, WaitWhile } from './core/taskrunner.js';
|
||||||
import { Exporter } from './export/exporter.js';
|
import { Exporter } from './export/exporter.js';
|
||||||
import { Exporter3dm } from './export/exporter3dm.js';
|
import { Exporter3dm } from './export/exporter3dm.js';
|
||||||
@ -76,6 +77,7 @@ export {
|
|||||||
CopyObjectAttributes,
|
CopyObjectAttributes,
|
||||||
IsObjectEmpty,
|
IsObjectEmpty,
|
||||||
EscapeHtmlChars,
|
EscapeHtmlChars,
|
||||||
|
EventSource,
|
||||||
TaskRunner,
|
TaskRunner,
|
||||||
RunTaskAsync,
|
RunTaskAsync,
|
||||||
RunTasks,
|
RunTasks,
|
||||||
|
|||||||
@ -46,6 +46,24 @@ describe ('Core', function () {
|
|||||||
OV.CopyObjectAttributes (src, dest3);
|
OV.CopyObjectAttributes (src, dest3);
|
||||||
assert.deepStrictEqual (dest3, {a : null, b : null, c : 6});
|
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