@@ -7,11 +7,6 @@ import { InnerSubscriber } from '../InnerSubscriber';
7
7
import { subscribeToResult } from '../util/subscribeToResult' ;
8
8
import { ObservableInput , OperatorFunction } from '../types' ;
9
9
10
- /* tslint:disable:max-line-length */
11
- export function exhaustMap < T , R > ( project : ( value : T , index : number ) => ObservableInput < R > ) : OperatorFunction < T , R > ;
12
- export function exhaustMap < T , I , R > ( project : ( value : T , index : number ) => ObservableInput < I > , resultSelector : ( outerValue : T , innerValue : I , outerIndex : number , innerIndex : number ) => R ) : OperatorFunction < T , R > ;
13
- /* tslint:enable:max-line-length */
14
-
15
10
/**
16
11
* Projects each source value to an Observable which is merged in the output
17
12
* Observable only if the previous projected Observable has completed.
@@ -43,34 +38,23 @@ export function exhaustMap<T, I, R>(project: (value: T, index: number) => Observ
43
38
* @param {function(value: T, ?index: number): ObservableInput } project A function
44
39
* that, when applied to an item emitted by the source Observable, returns an
45
40
* Observable.
46
- * @param {function(outerValue: T, innerValue: I, outerIndex: number, innerIndex: number): any } [resultSelector]
47
- * A function to produce the value on the output Observable based on the values
48
- * and the indices of the source (outer) emission and the inner Observable
49
- * emission. The arguments passed to this function are:
50
- * - `outerValue`: the value that came from the source
51
- * - `innerValue`: the value that came from the projected Observable
52
- * - `outerIndex`: the "index" of the value that came from the source
53
- * - `innerIndex`: the "index" of the value from the projected Observable
54
41
* @return {Observable } An Observable containing projected Observables
55
42
* of each item of the source, ignoring projected Observables that start before
56
43
* their preceding Observable has completed.
57
44
* @method exhaustMap
58
45
* @owner Observable
59
46
*/
60
- export function exhaustMap < T , I , R > (
61
- project : ( value : T , index : number ) => ObservableInput < I > ,
62
- resultSelector ?: ( outerValue : T , innerValue : I , outerIndex : number , innerIndex : number ) => R
63
- ) : OperatorFunction < T , R > {
64
- return ( source : Observable < T > ) => source . lift ( new SwitchFirstMapOperator ( project , resultSelector ) ) ;
65
- }
47
+ export function exhaustMap < T , R > ( project : ( value : T , index : number ) => ObservableInput < R > ) : OperatorFunction < T , R > {
48
+ return ( source : Observable < T > ) =>
49
+ source . lift ( new SwitchFirstMapOperator ( project ) ) ;
50
+ }
66
51
67
- class SwitchFirstMapOperator < T , I , R > implements Operator < T , R > {
68
- constructor ( private project : ( value : T , index : number ) => ObservableInput < I > ,
69
- private resultSelector ?: ( outerValue : T , innerValue : I , outerIndex : number , innerIndex : number ) => R ) {
52
+ class SwitchFirstMapOperator < T , R > implements Operator < T , R > {
53
+ constructor ( private project : ( value : T , index : number ) => ObservableInput < R > ) {
70
54
}
71
55
72
56
call ( subscriber : Subscriber < R > , source : any ) : any {
73
- return source . subscribe ( new SwitchFirstMapSubscriber ( subscriber , this . project , this . resultSelector ) ) ;
57
+ return source . subscribe ( new SwitchFirstMapSubscriber ( subscriber , this . project ) ) ;
74
58
}
75
59
}
76
60
@@ -79,14 +63,13 @@ class SwitchFirstMapOperator<T, I, R> implements Operator<T, R> {
79
63
* @ignore
80
64
* @extends {Ignored }
81
65
*/
82
- class SwitchFirstMapSubscriber < T , I , R > extends OuterSubscriber < T , I > {
83
- private hasSubscription : boolean = false ;
84
- private hasCompleted : boolean = false ;
85
- private index : number = 0 ;
66
+ class SwitchFirstMapSubscriber < T , R > extends OuterSubscriber < T , R > {
67
+ private hasSubscription = false ;
68
+ private hasCompleted = false ;
69
+ private index = 0 ;
86
70
87
71
constructor ( destination : Subscriber < R > ,
88
- private project : ( value : T , index : number ) => ObservableInput < I > ,
89
- private resultSelector ?: ( outerValue : T , innerValue : I , outerIndex : number , innerIndex : number ) => R ) {
72
+ private project : ( value : T , index : number ) => ObservableInput < R > ) {
90
73
super ( destination ) ;
91
74
}
92
75
@@ -115,26 +98,10 @@ class SwitchFirstMapSubscriber<T, I, R> extends OuterSubscriber<T, I> {
115
98
}
116
99
}
117
100
118
- notifyNext ( outerValue : T , innerValue : I ,
101
+ notifyNext ( outerValue : T , innerValue : R ,
119
102
outerIndex : number , innerIndex : number ,
120
- innerSub : InnerSubscriber < T , I > ) : void {
121
- const { resultSelector, destination } = this ;
122
- if ( resultSelector ) {
123
- this . trySelectResult ( outerValue , innerValue , outerIndex , innerIndex ) ;
124
- } else {
125
- destination . next ( innerValue ) ;
126
- }
127
- }
128
-
129
- private trySelectResult ( outerValue : T , innerValue : I ,
130
- outerIndex : number , innerIndex : number ) : void {
131
- const { resultSelector, destination } = this ;
132
- try {
133
- const result = resultSelector ( outerValue , innerValue , outerIndex , innerIndex ) ;
134
- destination . next ( result ) ;
135
- } catch ( err ) {
136
- destination . error ( err ) ;
137
- }
103
+ innerSub : InnerSubscriber < T , R > ) : void {
104
+ this . destination . next ( innerValue ) ;
138
105
}
139
106
140
107
notifyError ( err : any ) : void {
0 commit comments