1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950 |
- import { Observable } from '../Observable';
- import { subscribeToResult } from '../util/subscribeToResult';
- import { OuterSubscriber } from '../OuterSubscriber';
- /**
- * We need this JSDoc comment for affecting ESDoc.
- * @extends {Ignored}
- * @hide true
- */
- export class UsingObservable extends Observable {
- constructor(resourceFactory, observableFactory) {
- super();
- this.resourceFactory = resourceFactory;
- this.observableFactory = observableFactory;
- }
- static create(resourceFactory, observableFactory) {
- return new UsingObservable(resourceFactory, observableFactory);
- }
- /** @deprecated internal use only */ _subscribe(subscriber) {
- const { resourceFactory, observableFactory } = this;
- let resource;
- try {
- resource = resourceFactory();
- return new UsingSubscriber(subscriber, resource, observableFactory);
- }
- catch (err) {
- subscriber.error(err);
- }
- }
- }
- class UsingSubscriber extends OuterSubscriber {
- constructor(destination, resource, observableFactory) {
- super(destination);
- this.resource = resource;
- this.observableFactory = observableFactory;
- destination.add(resource);
- this.tryUse();
- }
- tryUse() {
- try {
- const source = this.observableFactory.call(this, this.resource);
- if (source) {
- this.add(subscribeToResult(this, source));
- }
- }
- catch (err) {
- this._error(err);
- }
- }
- }
- //# sourceMappingURL=UsingObservable.js.map
|