UNPKG

@basic-streams/take

Version:
39 lines (38 loc) 970 B
"use strict"; 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;