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 |