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.
78 lines
2.0 KiB
78 lines
2.0 KiB
import { Subscriber } from './Subscriber'; |
|
import { Observable } from './Observable'; |
|
import { subscribeTo } from './util/subscribeTo'; |
|
export class SimpleInnerSubscriber extends Subscriber { |
|
constructor(parent) { |
|
super(); |
|
this.parent = parent; |
|
} |
|
_next(value) { |
|
this.parent.notifyNext(value); |
|
} |
|
_error(error) { |
|
this.parent.notifyError(error); |
|
this.unsubscribe(); |
|
} |
|
_complete() { |
|
this.parent.notifyComplete(); |
|
this.unsubscribe(); |
|
} |
|
} |
|
export class ComplexInnerSubscriber extends Subscriber { |
|
constructor(parent, outerValue, outerIndex) { |
|
super(); |
|
this.parent = parent; |
|
this.outerValue = outerValue; |
|
this.outerIndex = outerIndex; |
|
} |
|
_next(value) { |
|
this.parent.notifyNext(this.outerValue, value, this.outerIndex, this); |
|
} |
|
_error(error) { |
|
this.parent.notifyError(error); |
|
this.unsubscribe(); |
|
} |
|
_complete() { |
|
this.parent.notifyComplete(this); |
|
this.unsubscribe(); |
|
} |
|
} |
|
export class SimpleOuterSubscriber extends Subscriber { |
|
notifyNext(innerValue) { |
|
this.destination.next(innerValue); |
|
} |
|
notifyError(err) { |
|
this.destination.error(err); |
|
} |
|
notifyComplete() { |
|
this.destination.complete(); |
|
} |
|
} |
|
export class ComplexOuterSubscriber extends Subscriber { |
|
notifyNext(_outerValue, innerValue, _outerIndex, _innerSub) { |
|
this.destination.next(innerValue); |
|
} |
|
notifyError(error) { |
|
this.destination.error(error); |
|
} |
|
notifyComplete(_innerSub) { |
|
this.destination.complete(); |
|
} |
|
} |
|
export function innerSubscribe(result, innerSubscriber) { |
|
if (innerSubscriber.closed) { |
|
return undefined; |
|
} |
|
if (result instanceof Observable) { |
|
return result.subscribe(innerSubscriber); |
|
} |
|
let subscription; |
|
try { |
|
subscription = subscribeTo(result)(innerSubscriber); |
|
} |
|
catch (error) { |
|
innerSubscriber.error(error); |
|
} |
|
return subscription; |
|
} |
|
//# sourceMappingURL=innerSubscribe.js.map
|