Giant blob of minor changes
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-prettier / node_modules / rxjs / src / internal / operators / concatAll.ts
1
2 import { mergeAll } from './mergeAll';
3 import { OperatorFunction, ObservableInput } from '../types';
4
5 export function concatAll<T>(): OperatorFunction<ObservableInput<T>, T>;
6 export function concatAll<R>(): OperatorFunction<any, R>;
7
8 /**
9  * Converts a higher-order Observable into a first-order Observable by
10  * concatenating the inner Observables in order.
11  *
12  * <span class="informal">Flattens an Observable-of-Observables by putting one
13  * inner Observable after the other.</span>
14  *
15  * ![](concatAll.png)
16  *
17  * Joins every Observable emitted by the source (a higher-order Observable), in
18  * a serial fashion. It subscribes to each inner Observable only after the
19  * previous inner Observable has completed, and merges all of their values into
20  * the returned observable.
21  *
22  * __Warning:__ If the source Observable emits Observables quickly and
23  * endlessly, and the inner Observables it emits generally complete slower than
24  * the source emits, you can run into memory issues as the incoming Observables
25  * collect in an unbounded buffer.
26  *
27  * Note: `concatAll` is equivalent to `mergeAll` with concurrency parameter set
28  * to `1`.
29  *
30  * ## Example
31  *
32  * For each click event, tick every second from 0 to 3, with no concurrency
33  * ```ts
34  * import { fromEvent, interval } from 'rxjs';
35  * import { map, take, concatAll } from 'rxjs/operators';
36  *
37  * const clicks = fromEvent(document, 'click');
38  * const higherOrder = clicks.pipe(
39  *   map(ev => interval(1000).pipe(take(4))),
40  * );
41  * const firstOrder = higherOrder.pipe(concatAll());
42  * firstOrder.subscribe(x => console.log(x));
43  *
44  * // Results in the following:
45  * // (results are not concurrent)
46  * // For every click on the "document" it will emit values 0 to 3 spaced
47  * // on a 1000ms interval
48  * // one click = 1000ms-> 0 -1000ms-> 1 -1000ms-> 2 -1000ms-> 3
49  * ```
50  *
51  * @see {@link combineAll}
52  * @see {@link concat}
53  * @see {@link concatMap}
54  * @see {@link concatMapTo}
55  * @see {@link exhaust}
56  * @see {@link mergeAll}
57  * @see {@link switchAll}
58  * @see {@link switchMap}
59  * @see {@link zipAll}
60  *
61  * @return {Observable} An Observable emitting values from all the inner
62  * Observables concatenated.
63  * @method concatAll
64  * @owner Observable
65  */
66 export function concatAll<T>(): OperatorFunction<ObservableInput<T>, T> {
67   return mergeAll<T>(1);
68 }