import { Observable } from '../Observable';
|
import { Operator } from '../Operator';
|
import { Subscriber } from '../Subscriber';
|
import { OperatorFunction } from '../types';
|
|
/**
|
* Ignores all items emitted by the source Observable and only passes calls of `complete` or `error`.
|
*
|
* 
|
*
|
* ## Examples
|
* ### Ignores emitted values, reacts to observable's completion.
|
* ```ts
|
* import { of } from 'rxjs';
|
* import { ignoreElements } from 'rxjs/operators';
|
*
|
* of('you', 'talking', 'to', 'me').pipe(
|
* ignoreElements(),
|
* )
|
* .subscribe(
|
* word => console.log(word),
|
* err => console.log('error:', err),
|
* () => console.log('the end'),
|
* );
|
* // result:
|
* // 'the end'
|
* ```
|
* @return {Observable} An empty Observable that only calls `complete`
|
* or `error`, based on which one is called by the source Observable.
|
* @method ignoreElements
|
* @owner Observable
|
*/
|
export function ignoreElements(): OperatorFunction<any, never> {
|
return function ignoreElementsOperatorFunction(source: Observable<any>) {
|
return source.lift(new IgnoreElementsOperator());
|
};
|
}
|
|
class IgnoreElementsOperator<T, R> implements Operator<T, R> {
|
call(subscriber: Subscriber<R>, source: any): any {
|
return source.subscribe(new IgnoreElementsSubscriber(subscriber));
|
}
|
}
|
|
/**
|
* We need this JSDoc comment for affecting ESDoc.
|
* @ignore
|
* @extends {Ignored}
|
*/
|
class IgnoreElementsSubscriber<T> extends Subscriber<T> {
|
protected _next(unused: T): void {
|
// Do nothing
|
}
|
}
|