forked from ReactiveX/rxjs
/
switchMapTo.ts
33 lines (26 loc) · 1.29 KB
/
switchMapTo.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import Operator from '../Operator';
import Observer from '../Observer';
import Observable from '../Observable';
import Subscriber from '../Subscriber';
import Subscription from '../Subscription';
import { FlatMapToSubscriber } from './flatMapTo-support';
export default function switchMapTo<T, R, R2>(observable: Observable<R>,
projectResult?: (innerValue: R, outerValue: T, innerIndex: number, outerIndex: number) => R2): Observable<R2> {
return this.lift(new SwitchMapToOperator(observable, projectResult));
}
class SwitchMapToOperator<T, R, R2> implements Operator<T, R> {
constructor(private observable: Observable<R>,
private resultSelector?: (innerValue: R, outerValue: T, innerIndex: number, outerIndex: number) => R2) {
}
call(subscriber: Subscriber<R>): Subscriber<T> {
return new SwitchMapToSubscriber(subscriber, this.observable, this.resultSelector);
}
}
class SwitchMapToSubscriber<T, R, R2> extends FlatMapToSubscriber<T, R, R2> {
innerSubscription: Subscription<T>;
constructor(destination: Observer<T>,
observable: Observable<R>,
resultSelector?: (innerValue: R, outerValue: T, innerIndex: number, outerIndex: number) => R2) {
super(destination, observable, resultSelector, 1);
}
}