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

Starts a new sequence for every value in the source sequence and merges their values

function mapMany(selector : Function) : IObservable.<TResult>

Where selector is: function (value : sourceType) : IObservable.<TResult>

Remarks

The returned sequence completes when the source sequence completes and all the sequences returned by selector complete

The returned sequence raises an error if the source sequence raises an error or any of the sequences returned by selector raise an error.

Marble Diagrams

xs = source
ys = output
s = selector

xs    ──o────o─────o─────/
        │    │     │
       s(x) s(x)  s(x)
        │    │     │
        └─o──│──/  │
          │  │     │
          │  └o──o─│───o─────o/
          │   │  │ │   │     │
          │   │  │ └o──│──o──│──o─/
          │   │  │  │  │  │  │  │
ys    ────o───o──o──o──o──o──o──o─/

xs    ──o────o─────o────
        │    │     │
       s(x) s(x)  s(x)
        │    │     │
        └─o──│──/  │
          │  │     │
          │  └o──o─│───x
          │   │  │ │   │
          │   │  │ └o──│
          │   │  │  │  │
ys    ────o───o──o──o──x

Return Value

IObservable.<TResult>

Examples

Observable.range(0, 5)
    .mapMany(function(v:int) : IObservable { return Observable.range(v, 2); })
    .subscribe(
        function(value : String) : void { trace(value); },
        function():void { trace("Completed"); }
    );

    // Trace output is:
    // 0
    // 1
    // 1
    // 2
    // 2
    // 3
    // 3
    // 4
    // 4
    // Completed