56 lines
1.8 KiB
Plaintext
56 lines
1.8 KiB
Plaintext
import { Subscriber } from '../Subscriber';
|
|
export function createOperatorSubscriber(destination, onNext, onComplete, onError, onFinalize) {
|
|
return new OperatorSubscriber(destination, onNext, onComplete, onError, onFinalize);
|
|
}
|
|
export class OperatorSubscriber extends Subscriber {
|
|
constructor(destination, onNext, onComplete, onError, onFinalize, shouldUnsubscribe) {
|
|
super(destination);
|
|
this.onFinalize = onFinalize;
|
|
this.shouldUnsubscribe = shouldUnsubscribe;
|
|
this._next = onNext
|
|
? function (value) {
|
|
try {
|
|
onNext(value);
|
|
}
|
|
catch (err) {
|
|
destination.error(err);
|
|
}
|
|
}
|
|
: super._next;
|
|
this._error = onError
|
|
? function (err) {
|
|
try {
|
|
onError(err);
|
|
}
|
|
catch (err) {
|
|
destination.error(err);
|
|
}
|
|
finally {
|
|
this.unsubscribe();
|
|
}
|
|
}
|
|
: super._error;
|
|
this._complete = onComplete
|
|
? function () {
|
|
try {
|
|
onComplete();
|
|
}
|
|
catch (err) {
|
|
destination.error(err);
|
|
}
|
|
finally {
|
|
this.unsubscribe();
|
|
}
|
|
}
|
|
: super._complete;
|
|
}
|
|
unsubscribe() {
|
|
var _a;
|
|
if (!this.shouldUnsubscribe || this.shouldUnsubscribe()) {
|
|
const { closed } = this;
|
|
super.unsubscribe();
|
|
!closed && ((_a = this.onFinalize) === null || _a === void 0 ? void 0 : _a.call(this));
|
|
}
|
|
}
|
|
}
|
|
//# sourceMappingURL=OperatorSubscriber.js.map |