diff --git a/src/subjects/ReplaySubject.ts b/src/subjects/ReplaySubject.ts index f7c606b856..ba1c0c318e 100644 --- a/src/subjects/ReplaySubject.ts +++ b/src/subjects/ReplaySubject.ts @@ -22,11 +22,12 @@ export class ReplaySubject extends Subject { _next(value: T): void { const now = this._getNow(); this.events.push(new ReplayEvent(now, value)); + this._trimBufferThenGetEvents(now); super._next(value); } _subscribe(subscriber: Subscriber): Subscription { - const events = this._getEvents(this._getNow()); + const events = this._trimBufferThenGetEvents(this._getNow()); let index = -1; const len = events.length; while (!subscriber.isUnsubscribed && ++index < len) { @@ -39,7 +40,7 @@ export class ReplaySubject extends Subject { return (this.scheduler || immediate).now(); } - private _getEvents(now): ReplayEvent[] { + private _trimBufferThenGetEvents(now): ReplayEvent[] { const bufferSize = this.bufferSize; const _windowTime = this._windowTime; const events = this.events;