iter-tools-es
Version:
The iterable toolbox
21 lines (19 loc) • 503 B
JavaScript
const {
asyncIterableCurry,
asyncCallReturn
} = require('../../internal/async-iterable.js');
async function __asyncFirstOr(iterable, whenEmpty) {
const iter = iterable[Symbol.asyncIterator]();
const {
value,
done
} = await iter.next();
if (done) return whenEmpty;
await asyncCallReturn(iter);
return value;
}
exports.__asyncFirstOr = __asyncFirstOr;
const asyncFirstOr = /*#__PURE__*/asyncIterableCurry(__asyncFirstOr, {
reduces: true
});
exports.asyncFirstOr = asyncFirstOr;