You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
1.1 KiB
44 lines
1.1 KiB
import { Subject } from './Subject'; |
|
import { Subscription } from './Subscription'; |
|
/** |
|
* @class AsyncSubject<T> |
|
*/ |
|
export class AsyncSubject extends Subject { |
|
constructor() { |
|
super(...arguments); |
|
this.value = null; |
|
this.hasNext = false; |
|
this.hasCompleted = false; |
|
} |
|
/** @deprecated internal use only */ _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
|