| import { Observable } from '../Observable'; |
| /** |
| * We need this JSDoc comment for affecting ESDoc. |
| * @extends {Ignored} |
| * @hide true |
| */ |
| export class ScalarObservable extends Observable { |
| constructor(value, scheduler) { |
| super(); |
| this.value = value; |
| this.scheduler = scheduler; |
| this._isScalar = true; |
| if (scheduler) { |
| this._isScalar = false; |
| } |
| } |
| static create(value, scheduler) { |
| return new ScalarObservable(value, scheduler); |
| } |
| static dispatch(state) { |
| const { done, value, subscriber } = state; |
| if (done) { |
| subscriber.complete(); |
| return; |
| } |
| subscriber.next(value); |
| if (subscriber.closed) { |
| return; |
| } |
| state.done = true; |
| this.schedule(state); |
| } |
| _subscribe(subscriber) { |
| const value = this.value; |
| const scheduler = this.scheduler; |
| if (scheduler) { |
| return scheduler.schedule(ScalarObservable.dispatch, 0, { |
| done: false, value, subscriber |
| }); |
| } |
| else { |
| subscriber.next(value); |
| if (!subscriber.closed) { |
| subscriber.complete(); |
| } |
| } |
| } |
| } |
| //# sourceMappingURL=ScalarObservable.js.map |