mirror of
				https://github.com/fooflington/selfdefined.git
				synced 2025-10-31 06:08:33 +00:00 
			
		
		
		
	
		
			
	
	
		
			48 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
		
		
			
		
	
	
			48 lines
		
	
	
		
			2.1 KiB
		
	
	
	
		
			TypeScript
		
	
	
	
	
	
|   | import { Observable } from '../Observable'; | ||
|  | import { Notification } from '../Notification'; | ||
|  | /** | ||
|  |  * Represents all of the notifications from the source Observable as `next` | ||
|  |  * emissions marked with their original types within {@link Notification} | ||
|  |  * objects. | ||
|  |  * | ||
|  |  * <span class="informal">Wraps `next`, `error` and `complete` emissions in | ||
|  |  * {@link Notification} objects, emitted as `next` on the output Observable. | ||
|  |  * </span> | ||
|  |  * | ||
|  |  * <img src="./img/materialize.png" width="100%"> | ||
|  |  * | ||
|  |  * `materialize` returns an Observable that emits a `next` notification for each | ||
|  |  * `next`, `error`, or `complete` emission of the source Observable. When the | ||
|  |  * source Observable emits `complete`, the output Observable will emit `next` as | ||
|  |  * a Notification of type "complete", and then it will emit `complete` as well. | ||
|  |  * When the source Observable emits `error`, the output will emit `next` as a | ||
|  |  * Notification of type "error", and then `complete`. | ||
|  |  * | ||
|  |  * This operator is useful for producing metadata of the source Observable, to | ||
|  |  * be consumed as `next` emissions. Use it in conjunction with | ||
|  |  * {@link dematerialize}. | ||
|  |  * | ||
|  |  * @example <caption>Convert a faulty Observable to an Observable of Notifications</caption> | ||
|  |  * var letters = Rx.Observable.of('a', 'b', 13, 'd'); | ||
|  |  * var upperCase = letters.map(x => x.toUpperCase()); | ||
|  |  * var materialized = upperCase.materialize(); | ||
|  |  * materialized.subscribe(x => console.log(x)); | ||
|  |  * | ||
|  |  * // Results in the following:
 | ||
|  |  * // - Notification {kind: "N", value: "A", error: undefined, hasValue: true}
 | ||
|  |  * // - Notification {kind: "N", value: "B", error: undefined, hasValue: true}
 | ||
|  |  * // - Notification {kind: "E", value: undefined, error: TypeError:
 | ||
|  |  * //   x.toUpperCase is not a function at MapSubscriber.letters.map.x
 | ||
|  |  * //   [as project] (http://1…, hasValue: false}
 | ||
|  |  * | ||
|  |  * @see {@link Notification} | ||
|  |  * @see {@link dematerialize} | ||
|  |  * | ||
|  |  * @return {Observable<Notification<T>>} An Observable that emits | ||
|  |  * {@link Notification} objects that wrap the original emissions from the source | ||
|  |  * Observable with metadata. | ||
|  |  * @method materialize | ||
|  |  * @owner Observable | ||
|  |  */ | ||
|  | export declare function materialize<T>(this: Observable<T>): Observable<Notification<T>>; |