@@ -13,18 +13,9 @@ export function forkJoin<T, T2, T3>(v1: ObservableInput<T>, v2: ObservableInput<
1313export function forkJoin < T , T2 , T3 , T4 > ( v1 : ObservableInput < T > , v2 : ObservableInput < T2 > , v3 : ObservableInput < T3 > , v4 : ObservableInput < T4 > ) : Observable < [ T , T2 , T3 , T4 ] > ;
1414export function forkJoin < T , T2 , T3 , T4 , T5 > ( v1 : ObservableInput < T > , v2 : ObservableInput < T2 > , v3 : ObservableInput < T3 > , v4 : ObservableInput < T4 > , v5 : ObservableInput < T5 > ) : Observable < [ T , T2 , T3 , T4 , T5 ] > ;
1515export function forkJoin < T , T2 , T3 , T4 , T5 , T6 > ( v1 : ObservableInput < T > , v2 : ObservableInput < T2 > , v3 : ObservableInput < T3 > , v4 : ObservableInput < T4 > , v5 : ObservableInput < T5 > , v6 : ObservableInput < T6 > ) : Observable < [ T , T2 , T3 , T4 , T5 , T6 ] > ;
16- export function forkJoin < T , R > ( v1 : ObservableInput < T > , project : ( v1 : T ) => R ) : Observable < R > ;
17- export function forkJoin < T , T2 , R > ( v1 : ObservableInput < T > , v2 : ObservableInput < T2 > , project : ( v1 : T , v2 : T2 ) => R ) : Observable < R > ;
18- export function forkJoin < T , T2 , T3 , R > ( v1 : ObservableInput < T > , v2 : ObservableInput < T2 > , v3 : ObservableInput < T3 > , project : ( v1 : T , v2 : T2 , v3 : T3 ) => R ) : Observable < R > ;
19- export function forkJoin < T , T2 , T3 , T4 , R > ( v1 : ObservableInput < T > , v2 : ObservableInput < T2 > , v3 : ObservableInput < T3 > , v4 : ObservableInput < T4 > , project : ( v1 : T , v2 : T2 , v3 : T3 , v4 : T4 ) => R ) : Observable < R > ;
20- export function forkJoin < T , T2 , T3 , T4 , T5 , R > ( v1 : ObservableInput < T > , v2 : ObservableInput < T2 > , v3 : ObservableInput < T3 > , v4 : ObservableInput < T4 > , v5 : ObservableInput < T5 > , project : ( v1 : T , v2 : T2 , v3 : T3 , v4 : T4 , v5 : T5 ) => R ) : Observable < R > ;
21- export function forkJoin < T , T2 , T3 , T4 , T5 , T6 , R > ( v1 : ObservableInput < T > , v2 : ObservableInput < T2 > , v3 : ObservableInput < T3 > , v4 : ObservableInput < T4 > , v5 : ObservableInput < T5 > , v6 : ObservableInput < T6 > , project : ( v1 : T , v2 : T2 , v3 : T3 , v4 : T4 , v5 : T5 , v6 : T6 ) => R ) : Observable < R > ;
16+ export function forkJoin < T > ( v1 : ObservableInput < T > ) : Observable < T [ ] > ;
2217export function forkJoin < T > ( sources : Array < ObservableInput < T > > ) : Observable < T [ ] > ;
23- export function forkJoin < R > ( sources : Array < ObservableInput < any > > ) : Observable < R > ;
24- export function forkJoin < T , R > ( sources : Array < ObservableInput < T > > , project : ( ...values : T [ ] ) => R ) : Observable < R > ;
25- export function forkJoin < R > ( sources : Array < ObservableInput < any > > , project : ( ...values : any [ ] ) => R ) : Observable < R > ;
2618export function forkJoin < T > ( ...sources : Array < ObservableInput < T > > ) : Observable < T [ ] > ;
27- export function forkJoin < R > ( ...sources : Array < ObservableInput < any > > ) : Observable < R > ;
2819/* tslint:enable:max-line-length */
2920
3021/**
@@ -132,20 +123,10 @@ export function forkJoin<R>(...sources: Array<ObservableInput<any>>): Observable
132123 * @name forkJoin
133124 * @owner Observable
134125 */
135- export function forkJoin < T , R > ( ...sources : Array < ObservableInput < T > |
136- Array < ObservableInput < T > > |
137- ( ( ...values : T [ ] ) => R ) > ) : Observable < R > {
138- if ( sources === null || arguments . length === 0 ) {
139- return EMPTY ;
140- }
141-
142- let resultSelector : ( ...values : T [ ] ) => R = null ;
143- if ( typeof sources [ sources . length - 1 ] === 'function' ) {
144- resultSelector = sources . pop ( ) as ( ( ...values : T [ ] ) => R ) ;
145- }
146-
147- // if the first and only other argument besides the resultSelector is an array
148- // assume it's been called with `forkJoin([obs1, obs2, obs3], resultSelector)`
126+ export function forkJoin < T > ( ...sources : Array < ObservableInput < T > |
127+ Array < ObservableInput < T > > > ) : Observable < T [ ] > {
128+ // if the first and only other argument is an array
129+ // assume it's been called with `forkJoin([obs1, obs2, obs3])`
149130 if ( sources . length === 1 && isArray ( sources [ 0 ] ) ) {
150131 sources = sources [ 0 ] as Array < ObservableInput < T > > ;
151132 }
@@ -155,7 +136,7 @@ export function forkJoin<T, R>(...sources: Array<ObservableInput<T> |
155136 }
156137
157138 return new Observable ( subscriber => {
158- return new ForkJoinSubscriber ( subscriber , sources as Array < ObservableInput < T > > , resultSelector ) ;
139+ return new ForkJoinSubscriber ( subscriber , sources as Array < ObservableInput < T > > ) ;
159140 } ) ;
160141}
161142/**
@@ -169,8 +150,7 @@ class ForkJoinSubscriber<T, R> extends OuterSubscriber<T, T> {
169150 private haveValues = 0 ;
170151
171152 constructor ( destination : Subscriber < R > ,
172- private sources : Array < ObservableInput < T > > ,
173- private resultSelector ?: ( ...values : T [ ] ) => R ) {
153+ private sources : Array < ObservableInput < T > > ) {
174154 super ( destination ) ;
175155
176156 const len = sources . length ;
@@ -197,7 +177,7 @@ class ForkJoinSubscriber<T, R> extends OuterSubscriber<T, T> {
197177 }
198178
199179 notifyComplete ( innerSub : InnerSubscriber < T , T > ) : void {
200- const { destination, haveValues, resultSelector , values } = this ;
180+ const { destination, haveValues, values } = this ;
201181 const len = values . length ;
202182
203183 if ( ! ( innerSub as any ) . _hasValue ) {
@@ -212,14 +192,7 @@ class ForkJoinSubscriber<T, R> extends OuterSubscriber<T, T> {
212192 }
213193
214194 if ( haveValues === len ) {
215- let result : R | T [ ] ;
216- try {
217- result = resultSelector ? resultSelector ( ...values ) : values ;
218- } catch ( err ) {
219- destination . error ( err ) ;
220- return ;
221- }
222- destination . next ( result ) ;
195+ destination . next ( values ) ;
223196 }
224197
225198 destination . complete ( ) ;
0 commit comments