@basic-streams/take
Version:
take operator for basic-streams
39 lines (38 loc) • 970 B
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
function take(n, stream) {
return function (cb) {
var state = { cb: cb, count: 0 };
function stop() {
if (state !== null) {
var disposer_1 = state.disposer;
state = null;
if (disposer_1) {
disposer_1();
}
}
}
function onEvent(x) {
if (state !== null) {
var cb_1 = state.cb;
cb_1(x);
state.count++;
if (state.count >= n) {
stop();
}
}
}
if (n === 0) {
state = null;
}
var disposer = stream(onEvent);
if (state === null) {
disposer();
}
else {
state.disposer = disposer;
}
return stop;
};
}
exports.default = take;