@thi.ng/rstream
Version:
Reactive streams & subscription primitives for constructing dataflow graphs / pipelines
26 lines (25 loc) • 733 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 (let s of src) {
stream2.next(s);
}
stream2.closeIn !== "never" && stream2.done();
}, __optsWithID("iterable-sync", opts));
export {
fromIterable,
fromIterableSync
};