@fbltd/async
Version:
Miscellaneous async utils
23 lines (22 loc) • 629 B
JavaScript
import { symAI } from "../../constants.js";
import { getStream } from "./get.stream.js";
export function onceStream(dep) {
const stream = getStream(dep);
const iterator = stream[symAI]();
return {
get isDisposed() {
return stream.isDisposed;
},
dispose: () => stream.dispose(),
[symAI]() {
return {
next: async () => {
const result = await iterator.next();
if (!result.done)
stream.dispose();
return result;
}
};
},
};
}