@thi.ng/rstream
Version:
Reactive streams & subscription primitives for constructing dataflow graphs / pipelines
32 lines (31 loc) • 781 B
JavaScript
import { __optsWithID } from "./idgen.js";
import { stream } from "./stream.js";
const fromIterable = (src, opts = {}) => stream(
(stream2) => {
const iter = src[Symbol.iterator]();
const id = setInterval(() => {
let val;
if ((val = iter.next()).done) {
clearInterval(id);
stream2.closeIn !== "never" && stream2.done();
} else {
stream2.next(val.value);
}
}, opts.delay || 0);
return () => clearInterval(id);
},
__optsWithID("iterable", opts)
);
const fromIterableSync = (src, opts) => stream(
(stream2) => {
for (const s of src) {
stream2.next(s);
}
stream2.closeIn !== "never" && stream2.done();
},
__optsWithID("iterable-sync", opts)
);
export {
fromIterable,
fromIterableSync
};