| import { Observable } from '../Observable'; |
| import { SchedulerLike } from '../types'; |
| |
| /** |
| * A simple Observable that emits no items to the Observer and immediately |
| * emits a complete notification. |
| * |
| * <span class="informal">Just emits 'complete', and nothing else.</span> |
| * |
| *  |
| * |
| * A simple Observable that only emits the complete notification. It can be used |
| * for composing with other Observables, such as in a {@link mergeMap}. |
| * |
| * ## Examples |
| * |
| * Log complete notification |
| * |
| * ```ts |
| * import { EMPTY } from 'rxjs'; |
| * |
| * EMPTY.subscribe({ |
| * next: () => console.log('Next'), |
| * complete: () => console.log('Complete!') |
| * }); |
| * |
| * // Outputs |
| * // Complete! |
| * ``` |
| * |
| * Emit the number 7, then complete |
| * |
| * ```ts |
| * import { EMPTY, startWith } from 'rxjs'; |
| * |
| * const result = EMPTY.pipe(startWith(7)); |
| * result.subscribe(x => console.log(x)); |
| * |
| * // Outputs |
| * // 7 |
| * ``` |
| * |
| * Map and flatten only odd numbers to the sequence `'a'`, `'b'`, `'c'` |
| * |
| * ```ts |
| * import { interval, mergeMap, of, EMPTY } from 'rxjs'; |
| * |
| * const interval$ = interval(1000); |
| * const result = interval$.pipe( |
| * mergeMap(x => x % 2 === 1 ? of('a', 'b', 'c') : EMPTY), |
| * ); |
| * result.subscribe(x => console.log(x)); |
| * |
| * // Results in the following to the console: |
| * // x is equal to the count on the interval, e.g. (0, 1, 2, 3, ...) |
| * // x will occur every 1000ms |
| * // if x % 2 is equal to 1, print a, b, c (each on its own) |
| * // if x % 2 is not equal to 1, nothing will be output |
| * ``` |
| * |
| * @see {@link Observable} |
| * @see {@link NEVER} |
| * @see {@link of} |
| * @see {@link throwError} |
| */ |
| export const EMPTY = new Observable<never>((subscriber) => subscriber.complete()); |
| |
| /** |
| * @param scheduler A {@link SchedulerLike} to use for scheduling |
| * the emission of the complete notification. |
| * @deprecated Replaced with the {@link EMPTY} constant or {@link scheduled} (e.g. `scheduled([], scheduler)`). Will be removed in v8. |
| */ |
| export function empty(scheduler?: SchedulerLike) { |
| return scheduler ? emptyScheduled(scheduler) : EMPTY; |
| } |
| |
| function emptyScheduled(scheduler: SchedulerLike) { |
| return new Observable<never>((subscriber) => scheduler.schedule(() => subscriber.complete())); |
| } |