@@ -9,8 +9,8 @@ import { MonoTypeOperatorFunction, TeardownLogic } from '../types';
9
9
10
10
/* tslint:disable:max-line-length */
11
11
/** @deprecated In future versions, empty notifiers will no longer re-emit the source value on the output observable. */
12
- export function delayWhen < T > ( delayDurationSelector : ( value : T ) => Observable < never > , subscriptionDelay ?: Observable < any > ) : MonoTypeOperatorFunction < T > ;
13
- export function delayWhen < T > ( delayDurationSelector : ( value : T ) => Observable < any > , subscriptionDelay ?: Observable < any > ) : MonoTypeOperatorFunction < T > ;
12
+ export function delayWhen < T > ( delayDurationSelector : ( value : T , index : number ) => Observable < never > , subscriptionDelay ?: Observable < any > ) : MonoTypeOperatorFunction < T > ;
13
+ export function delayWhen < T > ( delayDurationSelector : ( value : T , index : number ) => Observable < any > , subscriptionDelay ?: Observable < any > ) : MonoTypeOperatorFunction < T > ;
14
14
/* tslint:disable:max-line-length */
15
15
16
16
/**
@@ -51,7 +51,7 @@ export function delayWhen<T>(delayDurationSelector: (value: T) => Observable<any
51
51
* @see {@link debounce }
52
52
* @see {@link delay }
53
53
*
54
- * @param {function(value: T): Observable } delayDurationSelector A function that
54
+ * @param {function(value: T, index: number ): Observable } delayDurationSelector A function that
55
55
* returns an Observable for each value emitted by the source Observable, which
56
56
* is then used to delay the emission of that item on the output Observable
57
57
* until the Observable returned from this function emits a value.
@@ -63,7 +63,7 @@ export function delayWhen<T>(delayDurationSelector: (value: T) => Observable<any
63
63
* @method delayWhen
64
64
* @owner Observable
65
65
*/
66
- export function delayWhen < T > ( delayDurationSelector : ( value : T ) => Observable < any > ,
66
+ export function delayWhen < T > ( delayDurationSelector : ( value : T , index : number ) => Observable < any > ,
67
67
subscriptionDelay ?: Observable < any > ) : MonoTypeOperatorFunction < T > {
68
68
if ( subscriptionDelay ) {
69
69
return ( source : Observable < T > ) =>
@@ -74,7 +74,7 @@ export function delayWhen<T>(delayDurationSelector: (value: T) => Observable<any
74
74
}
75
75
76
76
class DelayWhenOperator < T > implements Operator < T , T > {
77
- constructor ( private delayDurationSelector : ( value : T ) => Observable < any > ) {
77
+ constructor ( private delayDurationSelector : ( value : T , index : number ) => Observable < any > ) {
78
78
}
79
79
80
80
call ( subscriber : Subscriber < T > , source : any ) : TeardownLogic {
@@ -90,9 +90,10 @@ class DelayWhenOperator<T> implements Operator<T, T> {
90
90
class DelayWhenSubscriber < T , R > extends OuterSubscriber < T , R > {
91
91
private completed : boolean = false ;
92
92
private delayNotifierSubscriptions : Array < Subscription > = [ ] ;
93
+ private index : number = 0 ;
93
94
94
95
constructor ( destination : Subscriber < T > ,
95
- private delayDurationSelector : ( value : T ) => Observable < any > ) {
96
+ private delayDurationSelector : ( value : T , index : number ) => Observable < any > ) {
96
97
super ( destination ) ;
97
98
}
98
99
@@ -117,8 +118,9 @@ class DelayWhenSubscriber<T, R> extends OuterSubscriber<T, R> {
117
118
}
118
119
119
120
protected _next ( value : T ) : void {
121
+ const index = this . index ++ ;
120
122
try {
121
- const delayNotifier = this . delayDurationSelector ( value ) ;
123
+ const delayNotifier = this . delayDurationSelector ( value , index ) ;
122
124
if ( delayNotifier ) {
123
125
this . tryDelay ( delayNotifier , value ) ;
124
126
}
0 commit comments