Skip to content
richardszalay edited this page May 20, 2011 · 10 revisions

Emits the values from multiple sources in the order that they arrive

static function merge(sources : Array.<IObservable>, 
    scheduler : IScheduler = null) : IObservable.<*>
function merge(sources : Array.<IObservable>, 
    scheduler : IScheduler = null) : IObservable.<*>

Where sources is an observable sequences of other sequences

If the list of sequences is, itself, a sequence, use mergeMany.

Remarks

The returned sequence completes when the source sequence completes.

The returned sequence raises an error if the source sequence (sources) raises an error or if any of the merged sequences raises an error.

Marble Diagrams

sources = sources / others
yz = output

sources ──o────o─────o─────/
          │    │     │
          │    │     │
          └─o──│──/  │
            │  │     │
            │  └o──o─│───o─────o/
            │   │  │ │   │     │
            │   │  │ └o──│──o──│──o─/
            │   │  │  │  │  │  │  │
ys      ────o───o──o──o──o──o──o──o─/

sources ──o────o─────o────
          │    │     │
          │    │     │
          └─o──│──/  │
            │  │     │
            │  └o──o─│───x
            │   │  │ │   │
            │   │  │ └o──│
            │   │  │  │  │
ys      ────o───o──o──o──x

Return Value

IObservable.<*>

Examples

Observable.merge([
        Observable.range(0, 3),
        Observable.range(10, 3),
        Observable.range(20, 3)
    ])
    .subscribe(
        function(value : int) : void { trace(value); },
        function():void { trace("Completed"); }
    );

    // Trace output is:
    // 0
    // 10
    // 20
    // 1
    // 11
    // 21
    // 2
    // 12
    // 22
    // Completed