From 429889b672eab65cabaa78c89cffcad089067988 Mon Sep 17 00:00:00 2001 From: Bryan Bonnet Date: Thu, 17 May 2018 15:13:09 -0400 Subject: [PATCH] fix(range): Range should be same for every subscriber --- spec/observables/range-spec.ts | 15 +++++++++++++++ src/internal/observable/range.ts | 3 ++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/spec/observables/range-spec.ts b/spec/observables/range-spec.ts index 1b3c540fea..1bd7729064 100644 --- a/spec/observables/range-spec.ts +++ b/spec/observables/range-spec.ts @@ -31,6 +31,21 @@ describe('range', () => { expectObservable(e1).toBe(expected, values); }); + it('should work for two subscribers', () => { + const e1 = range(1, 5) + .concatMap((x, i) => Observable.of(x).delay(i === 0 ? 0 : 20, rxTestScheduler)); + const expected = 'a-b-c-d-(e|)'; + const values = { + a: 1, + b: 2, + c: 3, + d: 4, + e: 5 + }; + expectObservable(e1).toBe(expected, values); + expectObservable(e1).toBe(expected, values); + }); + it('should synchronously create a range of values by default', () => { const results = [] as any[]; range(12, 4).subscribe(function (x) { diff --git a/src/internal/observable/range.ts b/src/internal/observable/range.ts index c5793997d6..b3f14fde24 100644 --- a/src/internal/observable/range.ts +++ b/src/internal/observable/range.ts @@ -36,6 +36,7 @@ export function range(start: number = 0, scheduler?: SchedulerLike): Observable { return new Observable(subscriber => { let index = 0; + let current = start; if (scheduler) { return scheduler.schedule(dispatch, 0, { @@ -47,7 +48,7 @@ export function range(start: number = 0, subscriber.complete(); break; } - subscriber.next(start++); + subscriber.next(current++); if (subscriber.closed) { break; }