mapMany
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>
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.
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
IObservable.<TResult>
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