Skip to content
John M. Baughman edited this page Dec 13, 2018 · 11 revisions

Concatonates multiple sequences by running each sequence as the previous one finishes

function concat(others : Array, scheduler : IScheduler = null) : IObservable.<T>

Where others is an array of IObservable. sequences.

Remarks

When each sequence (starting with the source sequence) completes, the next sequence in the array is subscribed to. When the final sequence completes, onCompleted is called.

If an error is raised, any remaining sequences will not be subscribed to.

The returned sequence completes when the source sequence completes.

The returned sequence raises an error if the source sequence raises an error.

Marble Diagrams

ws = source
xs, ys = others
zs = output

ws ─o──o──/
    │  │  │
xs  │  │  └─o──o──o──/
    │  │    │  │  │  │
ys  │  │    │  │  │  └───o───o──o──/
    │  │    │  │  │      │   │  │  │
zs ─o──o────o──o──o──────o───o──o──/


ws ─o──o──/
    │  │  │
xs  │  │  └─o──o──x
    │  │    │  │  │
ys  │  │    │  │  │
    │  │    │  │  │
zs ─o──o────o──o──x

Return Value

IObservable.<T>

Examples

Observable.range(1, 3)
    .concat([
        Observable.range(20, 3),
        Observable.range(50, 3)
    ])
    .subscribe(
        function(value : int) : void { trace(value); },
        function():void { trace("Completed"); }
    );

    // Trace output is:
    // 1
    // 2
    // 3
    // 20
    // 21
    // 22
    // 50
    // 51
    // 52
    // Completed
Observable.range(1, 3)
    .concat([
        Observable.error(new Error("Oh no!")),
        Observable.range(50, 3)
    ])
    .subscribe(
        function(value : int) : void { trace(value); },
        function():void { trace("Completed"); },
        function(e:Error) : void { trace(e.message); }
    );

    // Trace output is:
    // 1
    // 2
    // 3
    // Oh no!
Clone this wiki locally