| import { Subject } from './Subject'; |
| import { Subscription } from './Subscription'; |
| export class AsyncSubject extends Subject { |
| constructor() { |
| super(...arguments); |
| this.value = null; |
| this.hasNext = false; |
| this.hasCompleted = false; |
| } |
| _subscribe(subscriber) { |
| if (this.hasError) { |
| subscriber.error(this.thrownError); |
| return Subscription.EMPTY; |
| } |
| else if (this.hasCompleted && this.hasNext) { |
| subscriber.next(this.value); |
| subscriber.complete(); |
| return Subscription.EMPTY; |
| } |
| return super._subscribe(subscriber); |
| } |
| next(value) { |
| if (!this.hasCompleted) { |
| this.value = value; |
| this.hasNext = true; |
| } |
| } |
| error(error) { |
| if (!this.hasCompleted) { |
| super.error(error); |
| } |
| } |
| complete() { |
| this.hasCompleted = true; |
| if (this.hasNext) { |
| super.next(this.value); |
| } |
| super.complete(); |
| } |
| } |
| //# sourceMappingURL=AsyncSubject.js.map |