46 lines
1.5 KiB
Plaintext
46 lines
1.5 KiB
Plaintext
import { OperatorFunction } from '../types';
|
||
import { operate } from '../util/lift';
|
||
import { createOperatorSubscriber } from './OperatorSubscriber';
|
||
import { noop } from '../util/noop';
|
||
|
||
/**
|
||
* Ignores all items emitted by the source Observable and only passes calls of `complete` or `error`.
|
||
*
|
||
* 
|
||
*
|
||
* The `ignoreElements` operator suppresses all items emitted by the source Observable,
|
||
* but allows its termination notification (either `error` or `complete`) to pass through unchanged.
|
||
*
|
||
* If you do not care about the items being emitted by an Observable, but you do want to be notified
|
||
* when it completes or when it terminates with an error, you can apply the `ignoreElements` operator
|
||
* to the Observable, which will ensure that it will never call its observers’ `next` handlers.
|
||
*
|
||
* ## Example
|
||
*
|
||
* Ignore all `next` emissions from the source
|
||
*
|
||
* ```ts
|
||
* import { of, ignoreElements } from 'rxjs';
|
||
*
|
||
* of('you', 'talking', 'to', 'me')
|
||
* .pipe(ignoreElements())
|
||
* .subscribe({
|
||
* next: word => console.log(word),
|
||
* error: err => console.log('error:', err),
|
||
* complete: () => console.log('the end'),
|
||
* });
|
||
*
|
||
* // result:
|
||
* // 'the end'
|
||
* ```
|
||
*
|
||
* @return A function that returns an empty Observable that only calls
|
||
* `complete` or `error`, based on which one is called by the source
|
||
* Observable.
|
||
*/
|
||
export function ignoreElements(): OperatorFunction<unknown, never> {
|
||
return operate((source, subscriber) => {
|
||
source.subscribe(createOperatorSubscriber(subscriber, noop));
|
||
});
|
||
}
|