mirror of
				https://github.com/fooflington/selfdefined.git
				synced 2025-10-31 06:08:33 +00:00 
			
		
		
		
	
		
			
	
	
		
			48 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
		
		
			
		
	
	
			48 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
|   | import { Observable } from '../Observable'; | ||
|  | /** | ||
|  |  * Delays the emission of items from the source Observable by a given time span | ||
|  |  * determined by the emissions of another Observable. | ||
|  |  * | ||
|  |  * <span class="informal">It's like {@link delay}, but the time span of the | ||
|  |  * delay duration is determined by a second Observable.</span> | ||
|  |  * | ||
|  |  * <img src="./img/delayWhen.png" width="100%"> | ||
|  |  * | ||
|  |  * `delayWhen` time shifts each emitted value from the source Observable by a | ||
|  |  * time span determined by another Observable. When the source emits a value, | ||
|  |  * the `delayDurationSelector` function is called with the source value as | ||
|  |  * argument, and should return an Observable, called the "duration" Observable. | ||
|  |  * The source value is emitted on the output Observable only when the duration | ||
|  |  * Observable emits a value or completes. | ||
|  |  * | ||
|  |  * Optionally, `delayWhen` takes a second argument, `subscriptionDelay`, which | ||
|  |  * is an Observable. When `subscriptionDelay` emits its first value or | ||
|  |  * completes, the source Observable is subscribed to and starts behaving like | ||
|  |  * described in the previous paragraph. If `subscriptionDelay` is not provided, | ||
|  |  * `delayWhen` will subscribe to the source Observable as soon as the output | ||
|  |  * Observable is subscribed. | ||
|  |  * | ||
|  |  * @example <caption>Delay each click by a random amount of time, between 0 and 5 seconds</caption> | ||
|  |  * var clicks = Rx.Observable.fromEvent(document, 'click'); | ||
|  |  * var delayedClicks = clicks.delayWhen(event => | ||
|  |  *   Rx.Observable.interval(Math.random() * 5000) | ||
|  |  * ); | ||
|  |  * delayedClicks.subscribe(x => console.log(x)); | ||
|  |  * | ||
|  |  * @see {@link debounce} | ||
|  |  * @see {@link delay} | ||
|  |  * | ||
|  |  * @param {function(value: T): Observable} delayDurationSelector A function that | ||
|  |  * returns an Observable for each value emitted by the source Observable, which | ||
|  |  * is then used to delay the emission of that item on the output Observable | ||
|  |  * until the Observable returned from this function emits a value. | ||
|  |  * @param {Observable} subscriptionDelay An Observable that triggers the | ||
|  |  * subscription to the source Observable once it emits any value. | ||
|  |  * @return {Observable} An Observable that delays the emissions of the source | ||
|  |  * Observable by an amount of time specified by the Observable returned by | ||
|  |  * `delayDurationSelector`. | ||
|  |  * @method delayWhen | ||
|  |  * @owner Observable | ||
|  |  */ | ||
|  | export declare function delayWhen<T>(this: Observable<T>, delayDurationSelector: (value: T) => Observable<any>, subscriptionDelay?: Observable<any>): Observable<T>; |