@@ -13,18 +13,9 @@ export function forkJoin<T, T2, T3>(v1: ObservableInput<T>, v2: ObservableInput<
13
13
export function forkJoin < T , T2 , T3 , T4 > ( v1 : ObservableInput < T > , v2 : ObservableInput < T2 > , v3 : ObservableInput < T3 > , v4 : ObservableInput < T4 > ) : Observable < [ T , T2 , T3 , T4 ] > ;
14
14
export 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 ] > ;
15
15
export 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 [ ] > ;
22
17
export 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 > ;
26
18
export function forkJoin < T > ( ...sources : Array < ObservableInput < T > > ) : Observable < T [ ] > ;
27
- export function forkJoin < R > ( ...sources : Array < ObservableInput < any > > ) : Observable < R > ;
28
19
/* tslint:enable:max-line-length */
29
20
30
21
/**
@@ -132,20 +123,10 @@ export function forkJoin<R>(...sources: Array<ObservableInput<any>>): Observable
132
123
* @name forkJoin
133
124
* @owner Observable
134
125
*/
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])`
149
130
if ( sources . length === 1 && isArray ( sources [ 0 ] ) ) {
150
131
sources = sources [ 0 ] as Array < ObservableInput < T > > ;
151
132
}
@@ -155,7 +136,7 @@ export function forkJoin<T, R>(...sources: Array<ObservableInput<T> |
155
136
}
156
137
157
138
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 > > ) ;
159
140
} ) ;
160
141
}
161
142
/**
@@ -169,8 +150,7 @@ class ForkJoinSubscriber<T, R> extends OuterSubscriber<T, T> {
169
150
private haveValues = 0 ;
170
151
171
152
constructor ( destination : Subscriber < R > ,
172
- private sources : Array < ObservableInput < T > > ,
173
- private resultSelector ?: ( ...values : T [ ] ) => R ) {
153
+ private sources : Array < ObservableInput < T > > ) {
174
154
super ( destination ) ;
175
155
176
156
const len = sources . length ;
@@ -197,7 +177,7 @@ class ForkJoinSubscriber<T, R> extends OuterSubscriber<T, T> {
197
177
}
198
178
199
179
notifyComplete ( innerSub : InnerSubscriber < T , T > ) : void {
200
- const { destination, haveValues, resultSelector , values } = this ;
180
+ const { destination, haveValues, values } = this ;
201
181
const len = values . length ;
202
182
203
183
if ( ! ( innerSub as any ) . _hasValue ) {
@@ -212,14 +192,7 @@ class ForkJoinSubscriber<T, R> extends OuterSubscriber<T, T> {
212
192
}
213
193
214
194
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 ) ;
223
196
}
224
197
225
198
destination . complete ( ) ;
0 commit comments