import { canReportError } from './util/canReportError'; import { toSubscriber } from './util/toSubscriber'; import { observable as Symbol_observable } from './symbol/observable'; import { pipeFromArray } from './util/pipe'; import { config } from './config'; export class Observable { constructor(subscribe) { this._isScalar = false; if (subscribe) { this._subscribe = subscribe; } } lift(operator) { const observable = new Observable(); observable.source = this; observable.operator = operator; return observable; } subscribe(observerOrNext, error, complete) { const { operator } = this; const sink = toSubscriber(observerOrNext, error, complete); if (operator) { sink.add(operator.call(sink, this.source)); } else { sink.add(this.source || (config.useDeprecatedSynchronousErrorHandling && !sink.syncErrorThrowable) ? this._subscribe(sink) : this._trySubscribe(sink)); } if (config.useDeprecatedSynchronousErrorHandling) { if (sink.syncErrorThrowable) { sink.syncErrorThrowable = false; if (sink.syncErrorThrown) { throw sink.syncErrorValue; } } } return sink; } _trySubscribe(sink) { try { return this._subscribe(sink); } catch (err) { if (config.useDeprecatedSynchronousErrorHandling) { sink.syncErrorThrown = true; sink.syncErrorValue = err; } if (canReportError(sink)) { sink.error(err); } else { console.warn(err); } } } forEach(next, promiseCtor) { promiseCtor = getPromiseCtor(promiseCtor); return new promiseCtor((resolve, reject) => { let subscription; subscription = this.subscribe((value) => { try { next(value); } catch (err) { reject(err); if (subscription) { subscription.unsubscribe(); } } }, reject, resolve); }); } _subscribe(subscriber) { const { source } = this; return source && source.subscribe(subscriber); } [Symbol_observable]() { return this; } pipe(...operations) { if (operations.length === 0) { return this; } return pipeFromArray(operations)(this); } toPromise(promiseCtor) { promiseCtor = getPromiseCtor(promiseCtor); return new promiseCtor((resolve, reject) => { let value; this.subscribe((x) => value = x, (err) => reject(err), () => resolve(value)); }); } } Observable.create = (subscribe) => { return new Observable(subscribe); }; function getPromiseCtor(promiseCtor) { if (!promiseCtor) { promiseCtor = config.Promise || Promise; } if (!promiseCtor) { throw new Error('no Promise impl found'); } return promiseCtor; } //# sourceMappingURL=Observable.js.map
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
observable | Folder | 0755 |
|
|
operators | Folder | 0755 |
|
|
scheduled | Folder | 0755 |
|
|
scheduler | Folder | 0755 |
|
|
symbol | Folder | 0755 |
|
|
testing | Folder | 0755 |
|
|
util | Folder | 0755 |
|
|
AsyncSubject.js | File | 1.07 KB | 0644 |
|
AsyncSubject.js.map | File | 1.1 KB | 0644 |
|
BehaviorSubject.js | File | 876 B | 0644 |
|
BehaviorSubject.js.map | File | 875 B | 0644 |
|
InnerSubscriber.js | File | 653 B | 0644 |
|
InnerSubscriber.js.map | File | 751 B | 0644 |
|
Notification.js | File | 2.31 KB | 0644 |
|
Notification.js.map | File | 2.13 KB | 0644 |
|
Observable.js | File | 3.23 KB | 0644 |
|
Observable.js.map | File | 3.05 KB | 0644 |
|
Observer.js | File | 389 B | 0644 |
|
Observer.js.map | File | 433 B | 0644 |
|
Operator.js | File | 36 B | 0644 |
|
Operator.js.map | File | 105 B | 0644 |
|
OuterSubscriber.js | File | 416 B | 0644 |
|
OuterSubscriber.js.map | File | 489 B | 0644 |
|
ReplaySubject.js | File | 3.57 KB | 0644 |
|
ReplaySubject.js.map | File | 3.44 KB | 0644 |
|
Rx.js | File | 7.4 KB | 0644 |
|
Rx.js.map | File | 4.45 KB | 0644 |
|
Scheduler.js | File | 353 B | 0644 |
|
Scheduler.js.map | File | 459 B | 0644 |
|
Subject.js | File | 4.03 KB | 0644 |
|
Subject.js.map | File | 3.94 KB | 0644 |
|
SubjectSubscription.js | File | 823 B | 0644 |
|
SubjectSubscription.js.map | File | 831 B | 0644 |
|
Subscriber.js | File | 7.2 KB | 0644 |
|
Subscriber.js.map | File | 5.95 KB | 0644 |
|
Subscription.js | File | 4.68 KB | 0644 |
|
Subscription.js.map | File | 3.84 KB | 0644 |
|
config.js | File | 776 B | 0644 |
|
config.js.map | File | 513 B | 0644 |
|
innerSubscribe.js | File | 1.91 KB | 0644 |
|
innerSubscribe.js.map | File | 1.94 KB | 0644 |
|
types.js | File | 33 B | 0644 |
|
types.js.map | File | 99 B | 0644 |
|