Sha256: a96384ebcdd81656c965e4f2925f0df0697bc37713d135a6b4c56db314ccbc69
Contents?: true
Size: 849 Bytes
Versions: 49
Compression:
Stored size: 849 Bytes
Contents
import { Subject } from './Subject'; import { Observer } from './Observer'; import { Subscription } from './Subscription'; /** * We need this JSDoc comment for affecting ESDoc. * @ignore * @extends {Ignored} */ export class SubjectSubscription<T> extends Subscription { closed: boolean = false; constructor(public subject: Subject<T>, public subscriber: Observer<T>) { super(); } unsubscribe() { if (this.closed) { return; } this.closed = true; const subject = this.subject; const observers = subject.observers; this.subject = null; if (!observers || observers.length === 0 || subject.isStopped || subject.closed) { return; } const subscriberIndex = observers.indexOf(this.subscriber); if (subscriberIndex !== -1) { observers.splice(subscriberIndex, 1); } } }
Version data entries
49 entries across 49 versions & 4 rubygems