Observer object
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).
Observer Methods
Observer Instance Methods
Observer Methods
Rx.Observer.create([onNext], [onError], [onCompleted])
Creates an observer from the specified onNext
, onError
, and onCompleted
actions.
Arguments
[onNext]
(Function): Observer's onNext action implementation.[onError]
(Function): Observer's onError action implementation.[onCompleted]
(Function): Observer's onCompleted action implementation.
Returns
(Observer): The observer object implemented using the given actions.
Example
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
Location
- rx.js
Rx.Observer.fromNotifier(handler, [thisArg])
Creates an observer from a notification callback.
Arguments
handler
(Function): Function that handles a notification.[thisArg]
(Any
): Object to use asthis
when executinghandler
.
Returns
(Observer): The observer object that invokes the specified handler using a notification corresponding to each message it receives.
Example
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
Location
- rx.js
Observer Instance Methods
Rx.Observer.prototype.asObserver()
Hides the identity of an observer.
Returns
(Observer): An observer that hides the identity of the specified observer.
Example
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
Location
- rx.js
Rx.Observer.prototype.checked()
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.
Returns
(Observer): An observer that checks callbacks invocations against the observer grammar and, if the checks pass, forwards those to the specified observer.
Example
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);
Location
- rx.js
Rx.Observer.prototype.notifyOn(scheduler)
Schedules the invocation of observer methods on the given scheduler.
Arguments
scheduler
(Scheduler): Scheduler to schedule observer messages on.
Returns
(Observer): Observer whose messages are scheduled on the given scheduler.
Example
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
Location
- rx.js
Rx.Observer.prototype.onCompleted()
Notifies the observer of the end of the sequence.
Example
var observer = Rx.Observer.create(
function (x) {
console.log('Next: ' + x)
},
function (err) {
console.log('Error: ' + err);
},
function () {
console.log('Completed');
}
);
observer.onCompleted();
// => Completed
Location
- rx.js
Rx.Observer.prototype.onError(error)
Notifies the observer that an exception has occurred.
Arguments
error
(Any): The error that has occurred.
Example
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!!
Location
- rx.js
Rx.Observer.prototype.onNext(value)
Notifies the observer of a new element in the sequence.
Arguments
value
(Any): Next element in the sequence.
Example
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
Location
- rx.js
Rx.Observer.prototype.toNotifier()
Creates a notification callback from an observer.
Returns
(Function): The function that forwards its input notification to the underlying observer.
Example
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
Location
- rx.js