get the last (predicated) item from a source iterable
package requires a system that supports async-iteration, either natively or via down-compiling
npm install @async-generators/last --save
yarn add @async-generators/last
This package's main entry points to a commonjs distribution.
Additionally, the module entry points to a es2015 distribution, which can be used by build systems, such as webpack, to directly use es2015 modules.
last() iterates source and returns the last item where predicate(item) == true. if predicate is undefined then it simply returns the last item of the sequence. if source contains no items, or predicate() always returns false, then last() returns undefined.
source must have a [Symbol.asyncIterator] or [Symbol.iterator] property. If both are present only [Symbol.asyncIterator] is used.
example.js
const last = require('@async-generators/last').default;
async function* source() {
yield 1; yield 2; yield 3; yield 4;
}
async function main() {
console.log(await last(source(), await x => x < 4));
}
main();Execute with the latest node.js:
node --harmony-async-iteration example.js
output:
3
This library is fully typed and can be imported using:
import last from '@async-generators/last');It is also possible to directly execute your properly configured typescript with ts-node:
ts-node --harmony_async_iteration example.ts