-
Notifications
You must be signed in to change notification settings - Fork 8
materialize
Converts all messages, including onError and onComplete, into value messages (of type raix.reactive.Notification). To reverse the process, see [dematerialize].
function materialize() : IObservable.<Notification>
The messages are converted into instances of Notification, which can be re-applied to an IObserver by calling Notificaton.acceptWith or to methods directly by calling Notification.accept. Doing so will call the appropriate method (onNext, onCompleted, onError)
The Notification type can be accessed using the kind property, which will have a value of NotificationKind.ON_NEXT, NotificationKind.ON_ERROR, or NotificationKind.ON_COMPLETED
Values can be accessed directly from Notification using the hasValue and value properties.
An error can be accessed directly from Notification using the error property.
The returned sequence completes when the source sequence completes or errors, after it has sent the appropriate Notification
The returned sequence does not error
(o,x,/) = Instances of Notification (next, error, complete)
xs ──o─────o─────o───/
│ │ │ │
│ │ │ │
ys ──o─────o─────o───o/
(o) (o) (o) (/)
xs ──o─────o─────o───x
│ │ │ │
│ │ │ │
ys ──o─────o─────o───o/
(o) (o) (o) (x)
IObservable.<Notification>
Observable.range(1, 3).materialize()
.subscribe(
function(x : Notification) : void
{
switch(x.kind)
{
case NotificationKind.ON_NEXT:
trace("next notification - " + x.value.toString());
break;
case NotificationKind.ON_ERROR:
trace("error notification - " + x.error.toString());
break;
case NotificationKind.ON_COMPLETED:
trace("completed notification");
break;
}
},
function():void { trace("onCompleted call"); }
);
// Trace output is:
// next notification - 1
// next notification - 2
// next notification - 3
// completed notification
// onCompleted call
Observable.range(1, 3)
.concat([
Observable.error(new Error("boo"))
])
.materialize()
.subscribe(
function(x : Notification) : void
{
switch(x.kind)
{
case NotificationKind.ON_NEXT:
trace("next notification - " + x.value.toString());
break;
case NotificationKind.ON_ERROR:
trace("error notification - " + x.error.toString());
break;
case NotificationKind.ON_COMPLETED:
trace("completed notification");
break;
}
},
function():void { trace("onCompleted call"); }
);
// Trace output is:
// next notification - 1
// next notification - 2
// next notification - 3
// error notification - boo
// onCompleted call