@@ -7,11 +7,6 @@ import { InnerSubscriber } from '../InnerSubscriber';
77import { subscribeToResult } from '../util/subscribeToResult' ;
88import { ObservableInput , OperatorFunction } from '../types' ;
99
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-
1510/**
1611 * Projects each source value to an Observable which is merged in the output
1712 * 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
4338 * @param {function(value: T, ?index: number): ObservableInput } project A function
4439 * that, when applied to an item emitted by the source Observable, returns an
4540 * 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
5441 * @return {Observable } An Observable containing projected Observables
5542 * of each item of the source, ignoring projected Observables that start before
5643 * their preceding Observable has completed.
5744 * @method exhaustMap
5845 * @owner Observable
5946 */
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+ }
6651
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 > ) {
7054 }
7155
7256 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 ) ) ;
7458 }
7559}
7660
@@ -79,14 +63,13 @@ class SwitchFirstMapOperator<T, I, R> implements Operator<T, R> {
7963 * @ignore
8064 * @extends {Ignored }
8165 */
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 ;
8670
8771 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 > ) {
9073 super ( destination ) ;
9174 }
9275
@@ -115,26 +98,10 @@ class SwitchFirstMapSubscriber<T, I, R> extends OuterSubscriber<T, I> {
11598 }
11699 }
117100
118- notifyNext ( outerValue : T , innerValue : I ,
101+ notifyNext ( outerValue : T , innerValue : R ,
119102 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 ) ;
138105 }
139106
140107 notifyError ( err : any ) : void {
0 commit comments