UNPKG

@reactivex/ix-esnext-esm

Version:

The Interactive Extensions for JavaScript

27 lines (25 loc) 752 B
import { AsyncSink } from './asyncsink'; import { memoize } from './operators/memoize'; export function asyncify(func) { return function (...args) { const sink = new AsyncSink(); const handler = function (...innerArgs) { sink.write(innerArgs.length === 1 ? innerArgs[0] : innerArgs); sink.end(); }; try { func(...args.concat(handler)); } catch (e) { sink.error(e); sink.end(); } const yielder = async function* () { for (let next; !(next = await sink.next()).done;) { yield next.value; } }; return memoize()(yielder()); }; } //# sourceMappingURL=asyncify.mjs.map