wishthis/node_modules/rxjs/dist/esm/internal/observable/connectable.js

26 lines
855 B
JavaScript
Raw Normal View History

2022-06-08 10:36:39 +00:00
import { Subject } from '../Subject';
import { Observable } from '../Observable';
import { defer } from './defer';
const DEFAULT_CONFIG = {
connector: () => new Subject(),
resetOnDisconnect: true,
};
export function connectable(source, config = DEFAULT_CONFIG) {
let connection = null;
const { connector, resetOnDisconnect = true } = config;
let subject = connector();
const result = new Observable((subscriber) => {
return subject.subscribe(subscriber);
});
result.connect = () => {
if (!connection || connection.closed) {
connection = defer(() => source).subscribe(subject);
if (resetOnDisconnect) {
connection.add(() => (subject = connector()));
}
}
return connection;
};
return result;
}
//# sourceMappingURL=connectable.js.map