@@ -9,8 +9,8 @@ import { MonoTypeOperatorFunction, TeardownLogic } from '../types';
99
1010/* tslint:disable:max-line-length */
1111/** @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 > ;
1414/* tslint:disable:max-line-length */
1515
1616/**
@@ -51,7 +51,7 @@ export function delayWhen<T>(delayDurationSelector: (value: T) => Observable<any
5151 * @see {@link debounce }
5252 * @see {@link delay }
5353 *
54- * @param {function(value: T): Observable } delayDurationSelector A function that
54+ * @param {function(value: T, index: number ): Observable } delayDurationSelector A function that
5555 * returns an Observable for each value emitted by the source Observable, which
5656 * is then used to delay the emission of that item on the output Observable
5757 * until the Observable returned from this function emits a value.
@@ -63,7 +63,7 @@ export function delayWhen<T>(delayDurationSelector: (value: T) => Observable<any
6363 * @method delayWhen
6464 * @owner Observable
6565 */
66- export function delayWhen < T > ( delayDurationSelector : ( value : T ) => Observable < any > ,
66+ export function delayWhen < T > ( delayDurationSelector : ( value : T , index : number ) => Observable < any > ,
6767 subscriptionDelay ?: Observable < any > ) : MonoTypeOperatorFunction < T > {
6868 if ( subscriptionDelay ) {
6969 return ( source : Observable < T > ) =>
@@ -74,7 +74,7 @@ export function delayWhen<T>(delayDurationSelector: (value: T) => Observable<any
7474}
7575
7676class DelayWhenOperator < T > implements Operator < T , T > {
77- constructor ( private delayDurationSelector : ( value : T ) => Observable < any > ) {
77+ constructor ( private delayDurationSelector : ( value : T , index : number ) => Observable < any > ) {
7878 }
7979
8080 call ( subscriber : Subscriber < T > , source : any ) : TeardownLogic {
@@ -90,9 +90,10 @@ class DelayWhenOperator<T> implements Operator<T, T> {
9090class DelayWhenSubscriber < T , R > extends OuterSubscriber < T , R > {
9191 private completed : boolean = false ;
9292 private delayNotifierSubscriptions : Array < Subscription > = [ ] ;
93+ private index : number = 0 ;
9394
9495 constructor ( destination : Subscriber < T > ,
95- private delayDurationSelector : ( value : T ) => Observable < any > ) {
96+ private delayDurationSelector : ( value : T , index : number ) => Observable < any > ) {
9697 super ( destination ) ;
9798 }
9899
@@ -117,8 +118,9 @@ class DelayWhenSubscriber<T, R> extends OuterSubscriber<T, R> {
117118 }
118119
119120 protected _next ( value : T ) : void {
121+ const index = this . index ++ ;
120122 try {
121- const delayNotifier = this . delayDurationSelector ( value ) ;
123+ const delayNotifier = this . delayDurationSelector ( value , index ) ;
122124 if ( delayNotifier ) {
123125 this . tryDelay ( delayNotifier , value ) ;
124126 }
0 commit comments