-
Notifications
You must be signed in to change notification settings - Fork 8
catchErrors
richardszalay edited this page May 20, 2011
·
6 revisions
Runs a specific sequence when an error occurs, and prevents the original error message from being emitted
static function catchErrors(sources : Array.< IObservable.<T> >) : IObservable.<T>
Subscribes to the first sequence in sources. If an error occurs, the current sequence is unsubscribed from and the next sequence in sources.
The returned sequence completes if the current sequence in sources completes
The returned sequence errors if the last sequence in sources errors.
ws,xs,ys = sources
zs = output
ws ──o─────o─────x
│ │ │
xs │ │ └─o─o─x
│ │ │ │ │
ys │ │ │ │ └─o─o─/
│ │ │ │ │ │ │
zs ──o─────o───────o─o───o─o─/
ws ──o─────o─────x
│ │ │
xs │ │ └─o─o─x
│ │ │ │ │
ys │ │ │ │ └─o─o─x
│ │ │ │ │ │ │
zs ──o─────o───────o─o───o─o─x
Unless specified, Scheduler.synchronous
will be used to schedule the subscription to each source, including the first.
IObservable.<T>
var sourceA : IObservable = Observable.value(1)
.concat(int, Observable.error(new Error("Error 1"));
var sourceB : IObservable = Observable.value(2)
.concat(int, Observable.error(new Error("Error 2"));
var sourceC : IObservable = Observable.value(3);
Observable.catchErrors([sourceA, sourceB, sourceC])
.subscribe(
function(x:int) : void { trace(x); },
function() : void { trace("Completed"); },
function(e:Error) : void { trace("Error: " + e.message); }
);
// Trace output is:
// 1
// 2
// 3
// Completed
var sourceA : IObservable = Observable.value(1)
.concat(int, Observable.error(new Error("Error 1"));
var sourceB : IObservable = Observable.value(2)
.concat(int, Observable.error(new Error("Error 2"));
var sourceC : IObservable = Observable.value(3)
.concat(int, Observable.error(new Error("Error 3"));
Observable.catchErrors([sourceA, sourceB, sourceC])
.subscribe(
function(x:int) : void { trace(x); },
function() : void { trace("Completed"); },
function(e:Error) : void { trace("Error: " + e.message); }
);
// Trace output is:
// 1
// 2
// 3
// Error: Error 3