blob: e153e774d2b763f371e64b2c448d4d60ee40ecbf [file] [log] [blame]
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`.
*
* ![](ignoreElements.png)
*
* ## 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
}
}