UNPKG

pubnub

Version:

Publish & Subscribe Real-time Messaging with PubNub

38 lines (37 loc) 780 B
"use strict"; /** * Event Engine terminate signal listener module. * * @internal */ Object.defineProperty(exports, "__esModule", { value: true }); exports.Subject = void 0; /** * @internal */ class Subject { constructor(sync = false) { this.sync = sync; this.listeners = new Set(); } subscribe(listener) { this.listeners.add(listener); return () => { this.listeners.delete(listener); }; } notify(event) { const wrapper = () => { this.listeners.forEach((listener) => { listener(event); }); }; if (this.sync) { wrapper(); } else { setTimeout(wrapper, 0); } } } exports.Subject = Subject;