mirror of
				https://github.com/fooflington/selfdefined.git
				synced 2025-10-31 06:08:33 +00:00 
			
		
		
		
	
		
			
	
	
		
			44 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
		
		
			
		
	
	
			44 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
|   | import { Observable } from '../Observable'; | ||
|  | import { Notification } from '../Notification'; | ||
|  | /** | ||
|  |  * Converts an Observable of {@link Notification} objects into the emissions | ||
|  |  * that they represent. | ||
|  |  * | ||
|  |  * <span class="informal">Unwraps {@link Notification} objects as actual `next`, | ||
|  |  * `error` and `complete` emissions. The opposite of {@link materialize}.</span> | ||
|  |  * | ||
|  |  * <img src="./img/dematerialize.png" width="100%"> | ||
|  |  * | ||
|  |  * `dematerialize` is assumed to operate an Observable that only emits | ||
|  |  * {@link Notification} objects as `next` emissions, and does not emit any | ||
|  |  * `error`. Such Observable is the output of a `materialize` operation. Those | ||
|  |  * notifications are then unwrapped using the metadata they contain, and emitted | ||
|  |  * as `next`, `error`, and `complete` on the output Observable. | ||
|  |  * | ||
|  |  * Use this operator in conjunction with {@link materialize}. | ||
|  |  * | ||
|  |  * @example <caption>Convert an Observable of Notifications to an actual Observable</caption> | ||
|  |  * var notifA = new Rx.Notification('N', 'A'); | ||
|  |  * var notifB = new Rx.Notification('N', 'B'); | ||
|  |  * var notifE = new Rx.Notification('E', void 0, | ||
|  |  *   new TypeError('x.toUpperCase is not a function') | ||
|  |  * ); | ||
|  |  * var materialized = Rx.Observable.of(notifA, notifB, notifE); | ||
|  |  * var upperCase = materialized.dematerialize(); | ||
|  |  * upperCase.subscribe(x => console.log(x), e => console.error(e)); | ||
|  |  * | ||
|  |  * // Results in:
 | ||
|  |  * // A
 | ||
|  |  * // B
 | ||
|  |  * // TypeError: x.toUpperCase is not a function
 | ||
|  |  * | ||
|  |  * @see {@link Notification} | ||
|  |  * @see {@link materialize} | ||
|  |  * | ||
|  |  * @return {Observable} An Observable that emits items and notifications | ||
|  |  * embedded in Notification objects emitted by the source Observable. | ||
|  |  * @method dematerialize | ||
|  |  * @owner Observable | ||
|  |  */ | ||
|  | export declare function dematerialize<T>(this: Observable<Notification<T>>): Observable<T>; |