Buckets:
| import { Subject } from './Subject'; | |
| import { Subscriber } from './Subscriber'; | |
| /** | |
| * A variant of Subject that only emits a value when it completes. It will emit | |
| * its latest value to all its observers on completion. | |
| */ | |
| export class AsyncSubject<T> extends Subject<T> { | |
| private _value: T | null = null; | |
| private _hasValue = false; | |
| private _isComplete = false; | |
| /** @internal */ | |
| protected _checkFinalizedStatuses(subscriber: Subscriber<T>) { | |
| 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: T): void { | |
| if (!this.isStopped) { | |
| this._value = value; | |
| this._hasValue = true; | |
| } | |
| } | |
| complete(): void { | |
| const { _hasValue, _value, _isComplete } = this; | |
| if (!_isComplete) { | |
| this._isComplete = true; | |
| _hasValue && super.next(_value!); | |
| super.complete(); | |
| } | |
| } | |
| } | |
Xet Storage Details
- Size:
- 1.05 kB
- Xet hash:
- 7f3e8417cb30d418da4e21806b0a4c19fff6ebfe1202d7d00281bab7ef8c6036
·
Xet efficiently stores files, intelligently splitting them into unique chunks and accelerating uploads and downloads. More info.