diff options
Diffstat (limited to 'node_modules/rxjs/src/internal/operators/takeUntil.ts')
| -rw-r--r-- | node_modules/rxjs/src/internal/operators/takeUntil.ts | 50 |
1 files changed, 50 insertions, 0 deletions
diff --git a/node_modules/rxjs/src/internal/operators/takeUntil.ts b/node_modules/rxjs/src/internal/operators/takeUntil.ts new file mode 100644 index 0000000..177141d --- /dev/null +++ b/node_modules/rxjs/src/internal/operators/takeUntil.ts @@ -0,0 +1,50 @@ +import { MonoTypeOperatorFunction, ObservableInput } from '../types'; +import { operate } from '../util/lift'; +import { createOperatorSubscriber } from './OperatorSubscriber'; +import { innerFrom } from '../observable/innerFrom'; +import { noop } from '../util/noop'; + +/** + * Emits the values emitted by the source Observable until a `notifier` + * Observable emits a value. + * + * <span class="informal">Lets values pass until a second Observable, + * `notifier`, emits a value. Then, it completes.</span> + * + *  + * + * `takeUntil` subscribes and begins mirroring the source Observable. It also + * monitors a second Observable, `notifier` that you provide. If the `notifier` + * emits a value, the output Observable stops mirroring the source Observable + * and completes. If the `notifier` doesn't emit any value and completes + * then `takeUntil` will pass all values. + * + * ## Example + * + * Tick every second until the first click happens + * + * ```ts + * import { interval, fromEvent, takeUntil } from 'rxjs'; + * + * const source = interval(1000); + * const clicks = fromEvent(document, 'click'); + * const result = source.pipe(takeUntil(clicks)); + * result.subscribe(x => console.log(x)); + * ``` + * + * @see {@link take} + * @see {@link takeLast} + * @see {@link takeWhile} + * @see {@link skip} + * + * @param notifier The `ObservableInput` whose first emitted value will cause the output + * Observable of `takeUntil` to stop emitting values from the source Observable. + * @return A function that returns an Observable that emits the values from the + * source Observable until `notifier` emits its first value. + */ +export function takeUntil<T>(notifier: ObservableInput<any>): MonoTypeOperatorFunction<T> { + return operate((source, subscriber) => { + innerFrom(notifier).subscribe(createOperatorSubscriber(subscriber, () => subscriber.complete(), noop)); + !subscriber.closed && source.subscribe(subscriber); + }); +} |
