diff --git a/spec/observables/forkJoin-spec.js b/spec/observables/forkJoin-spec.js index cefa7bb882..4b7531a037 100644 --- a/spec/observables/forkJoin-spec.js +++ b/spec/observables/forkJoin-spec.js @@ -169,6 +169,13 @@ describe('Observable.forkJoin', function () { expectObservable(e1).toBe(expected); }); + it('should complete if sources list is empty', function () { + var e1 = Observable.forkJoin([]); + var expected = '|'; + + expectObservable(e1).toBe(expected); + }); + it('should complete when any of source is empty with selector', function () { function selector(x, y) { return x + y; @@ -242,4 +249,4 @@ describe('Observable.forkJoin', function () { expectObservable(e1).toBe(expected); }); -}); \ No newline at end of file +}); diff --git a/src/observable/forkJoin.ts b/src/observable/forkJoin.ts index 3d34bb9771..3ec55a0de7 100644 --- a/src/observable/forkJoin.ts +++ b/src/observable/forkJoin.ts @@ -29,6 +29,10 @@ export class ForkJoinObservable extends Observable { sources = >>sources[0]; } + if (sources.length === 0) { + return new EmptyObservable(); + } + return new ForkJoinObservable( | Promise>>sources, resultSelector); }