doc/api/core/observer.md
The Observer object provides support for push-style iteration over an observable sequence.
The Observer and Objects interfaces provide a generalized mechanism for push-based notification, also known as the observer design pattern. The Observable object represents the object that sends notifications (the provider); the Observer object represents the class that receives them (the observer).
<!-- div -->Observer MethodsObserver Instance MethodsRx.Observer.create([onNext], [onError], [onCompleted])<a href="#rxobservercreateonnext-onerror-oncompleted">#</a> Ⓢ [Ⓣ][1]
Creates an observer from the specified onNext, onError, and onCompleted actions.
[onNext] (Function): Observer's onNext action implementation.[onError] (Function): Observer's onError action implementation.[onCompleted] (Function): Observer's onCompleted action implementation.(Observer): The observer object implemented using the given actions.
var source = Rx.Observable.return(42);
var observer = Rx.Observer.create(
function (x) {
console.log('Next: ' + x);
},
function (err) {
console.log('Error: ' + err);
},
function () {
console.log('Completed');
}
);
var subscription = source.subscribe(observer);
// => Next: 42
// => Completed
Rx.Observer.fromNotifier(handler, [thisArg])<a href="#rxobserverfromotifierhandler">#</a> Ⓢ [Ⓣ][1]
Creates an observer from a notification callback.
handler (Function): Function that handles a notification.[thisArg] (Any): Object to use as this when executing handler.(Observer): The observer object that invokes the specified handler using a notification corresponding to each message it receives.
function handler(n) {
// Handle next calls
if (n.kind === 'N') {
console.log('Next: ' + n.value);
}
// Handle error calls
if (n.kind === 'E') {
console.log('Error: ' + n.exception);
}
// Handle completed
if (n.kind === 'C') {
console.log('Completed')
}
}
Rx.Observer.fromNotifier(handler).onNext(42);
// => Next: 42
Rx.Observer.fromNotifier(handler).onError(new Error('error!!!'));
// => Error: Error: error!!!
Rx.Observer.fromNotifier(handler).onCompleted();
// => false
Rx.Observer.prototype.asObserver()<a href="#rxobserverprototypeasobserver">#</a> Ⓢ [Ⓣ][1]
Hides the identity of an observer.
(Observer): An observer that hides the identity of the specified observer.
function SampleObserver () {
Rx.Observer.call(this);
this.isStopped = false;
}
SampleObserver.prototype = Object.create(Rx.Observer.prototype);
SampleObserver.prototype.constructor = SampleObserver;
Object.defineProperties(SampleObserver.prototype, {
onNext: {
value: function (x) {
if (!this.isStopped) {
console.log('Next: ' + x);
}
}
},
onError: {
value: function (err) {
if (!this.isStopped) {
this.isStopped = true;
console.log('Error: ' + err);
}
}
},
onCompleted: {
value: function () {
if (!this.isStopped) {
this.isStopped = true;
console.log('Completed');
}
}
}
});
var sampleObserver = new SampleObserver();
var source = sampleObserver.asObserver();
console.log(source === sampleObserver);
// => false
Rx.Observer.prototype.checked()<a href="#rxobserverprototypechecked">#</a> Ⓢ [Ⓣ][1]
Checks access to the observer for grammar violations. This includes checking for multiple onError or onCompleted calls, as well as reentrancy in any of the observer methods.
If a violation is detected, an Error is thrown from the offending observer method call.
(Observer): An observer that checks callbacks invocations against the observer grammar and, if the checks pass, forwards those to the specified observer.
var observer = Rx.Observer.create(
function (x) {
console.log('Next: ' + x)
},
function (err) {
console.log('Error: ' + err);
},
function () {
console.log('Completed');
}
);
var checked = observer.checked();
checked.onNext(42);
// => Next: 42
checked.onCompleted();
// => Completed
// Throws Error('Observer completed')
checked.onNext(42);
Rx.Observer.prototype.notifyOn(scheduler)<a href="#rxobserverprototypenotifyonscheduler">#</a> Ⓢ [Ⓣ][1]
Schedules the invocation of observer methods on the given scheduler.
scheduler (Scheduler): Scheduler to schedule observer messages on.(Observer): Observer whose messages are scheduled on the given scheduler.
var observer = Rx.Observer.create(
function (x) {
console.log('Next: ' + x)
},
function (err) {
console.log('Error: ' + err);
},
function () {
console.log('Completed');
}
);
// Notify on timeout scheduler
var timeoutObserver = observer.notifyOn(Rx.Scheduler.timeout);
timeoutObserver.onNext(42);
// => Next: 42
Rx.Observer.prototype.onCompleted()<a href="#rxobserverprototypeoncompleted">#</a> Ⓢ [Ⓣ][1]
Notifies the observer of the end of the sequence.
var observer = Rx.Observer.create(
function (x) {
console.log('Next: ' + x)
},
function (err) {
console.log('Error: ' + err);
},
function () {
console.log('Completed');
}
);
observer.onCompleted();
// => Completed
Rx.Observer.prototype.onError(error)<a href="#rxobserverprototypeonerrorerror">#</a> Ⓢ [Ⓣ][1]
Notifies the observer that an exception has occurred.
error (Any): The error that has occurred.var observer = Rx.Observer.create(
function (x) {
console.log('Next: ' + x)
},
function (err) {
console.log('Error: ' + err);
},
function () {
console.log('Completed');
}
);
observer.onError(new Error('error!!'));
// => Error: Error: error!!
Rx.Observer.prototype.onNext(value)<a href="#rxobserverprototypeonnextvalue">#</a> Ⓢ [Ⓣ][1]
Notifies the observer of a new element in the sequence.
value (Any): Next element in the sequence.var observer = Rx.Observer.create(
function (x) {
console.log('Next: ' + x)
},
function (err) {
console.log('Error: ' + err);
},
function () {
console.log('Completed');
}
);
observer.onNext(42);
// => Next: 42
Rx.Observer.prototype.toNotifier()<a href="#rxobserverprototypetonotifier">#</a> Ⓢ [Ⓣ][1]
Creates a notification callback from an observer.
(Function): The function that forwards its input notification to the underlying observer.
var observer = Rx.Observer.create(
function (x) {
console.log('Next: ' + x)
},
function (err) {
console.log('Error: ' + err);
},
function () {
console.log('Completed');
}
);
var notifier = observer.toNotifier();
// Invoke with onNext
notifier(Rx.Notification.createOnNext(42));
// => Next: 42
// Invoke with onCompleted
notifier(Rx.Notification.createOnCompleted());
// => Completed