34 lines
No EOL
991 B
JavaScript
Executable file
34 lines
No EOL
991 B
JavaScript
Executable file
import { Subject } from './Subject';
|
|
export class AsyncSubject extends Subject {
|
|
constructor() {
|
|
super(...arguments);
|
|
this._value = null;
|
|
this._hasValue = false;
|
|
this._isComplete = false;
|
|
}
|
|
_checkFinalizedStatuses(subscriber) {
|
|
const { hasError, _hasValue, _value, thrownError, isStopped, _isComplete } = this;
|
|
if (hasError) {
|
|
subscriber.error(thrownError);
|
|
}
|
|
else if (isStopped || _isComplete) {
|
|
_hasValue && subscriber.next(_value);
|
|
subscriber.complete();
|
|
}
|
|
}
|
|
next(value) {
|
|
if (!this.isStopped) {
|
|
this._value = value;
|
|
this._hasValue = true;
|
|
}
|
|
}
|
|
complete() {
|
|
const { _hasValue, _value, _isComplete } = this;
|
|
if (!_isComplete) {
|
|
this._isComplete = true;
|
|
_hasValue && super.next(_value);
|
|
super.complete();
|
|
}
|
|
}
|
|
}
|
|
//# sourceMappingURL=AsyncSubject.js.map
|