@reactivex/ix-esnext-esm
Version:
The Interactive Extensions for JavaScript
22 lines (20 loc) • 759 B
JavaScript
import { RefCountList } from '../../iterable/operators/_refcountlist';
import { create } from '../create';
import { MemoizeAsyncBuffer } from './memoize';
class PublishedAsyncBuffer extends MemoizeAsyncBuffer {
constructor(source) {
super(source, new RefCountList(0));
}
[Symbol.asyncIterator]() {
this._buffer.readerCount++;
return this._getIterable(this._buffer.count)[Symbol.asyncIterator]();
}
}
export function publish(selector) {
return function publishOperatorFunction(source) {
return selector
? create(async () => selector(publish()(source))[Symbol.asyncIterator]())
: new PublishedAsyncBuffer(source[Symbol.asyncIterator]());
};
}
//# sourceMappingURL=publish.mjs.map