mirror of
				https://github.com/fooflington/selfdefined.git
				synced 2025-10-30 21:58:32 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			42 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			42 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| "use strict";
 | |
| var exhaust_1 = require('../operators/exhaust');
 | |
| /**
 | |
|  * Converts a higher-order Observable into a first-order Observable by dropping
 | |
|  * inner Observables while the previous inner Observable has not yet completed.
 | |
|  *
 | |
|  * <span class="informal">Flattens an Observable-of-Observables by dropping the
 | |
|  * next inner Observables while the current inner is still executing.</span>
 | |
|  *
 | |
|  * <img src="./img/exhaust.png" width="100%">
 | |
|  *
 | |
|  * `exhaust` subscribes to an Observable that emits Observables, also known as a
 | |
|  * higher-order Observable. Each time it observes one of these emitted inner
 | |
|  * Observables, the output Observable begins emitting the items emitted by that
 | |
|  * inner Observable. So far, it behaves like {@link mergeAll}. However,
 | |
|  * `exhaust` ignores every new inner Observable if the previous Observable has
 | |
|  * not yet completed. Once that one completes, it will accept and flatten the
 | |
|  * next inner Observable and repeat this process.
 | |
|  *
 | |
|  * @example <caption>Run a finite timer for each click, only if there is no currently active timer</caption>
 | |
|  * var clicks = Rx.Observable.fromEvent(document, 'click');
 | |
|  * var higherOrder = clicks.map((ev) => Rx.Observable.interval(1000).take(5));
 | |
|  * var result = higherOrder.exhaust();
 | |
|  * result.subscribe(x => console.log(x));
 | |
|  *
 | |
|  * @see {@link combineAll}
 | |
|  * @see {@link concatAll}
 | |
|  * @see {@link switch}
 | |
|  * @see {@link mergeAll}
 | |
|  * @see {@link exhaustMap}
 | |
|  * @see {@link zipAll}
 | |
|  *
 | |
|  * @return {Observable} An Observable that takes a source of Observables and propagates the first observable
 | |
|  * exclusively until it completes before subscribing to the next.
 | |
|  * @method exhaust
 | |
|  * @owner Observable
 | |
|  */
 | |
| function exhaust() {
 | |
|     return exhaust_1.exhaust()(this);
 | |
| }
 | |
| exports.exhaust = exhaust;
 | |
| //# sourceMappingURL=exhaust.js.map
 | 
