-
Notifications
You must be signed in to change notification settings - Fork 8
concat
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.
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.
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
IObservable.<T>
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!