wishthis/node_modules/rxjs/dist/esm/internal/operators/refCount.js

26 lines
978 B
JavaScript
Raw Normal View History

2022-06-08 10:36:39 +00:00
import { operate } from '../util/lift';
import { createOperatorSubscriber } from './OperatorSubscriber';
export function refCount() {
return operate((source, subscriber) => {
let connection = null;
source._refCount++;
const refCounter = createOperatorSubscriber(subscriber, undefined, undefined, undefined, () => {
if (!source || source._refCount <= 0 || 0 < --source._refCount) {
connection = null;
return;
}
const sharedConnection = source._connection;
const conn = connection;
connection = null;
if (sharedConnection && (!conn || sharedConnection === conn)) {
sharedConnection.unsubscribe();
}
subscriber.unsubscribe();
});
source.subscribe(refCounter);
if (!refCounter.closed) {
connection = source.connect();
}
});
}
//# sourceMappingURL=refCount.js.map