map items of an iterable sequence to another value
package requires a system that supports async-iteration, either natively or via down-compiling
npm install @async-generators/map --save
yarn add @async-generators/map
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.
map()
iterates the source and yields await selector(item, index)
source
must have a [Symbol.asyncIterator]
or [Symbol.iterator]
property. If both are present only [Symbol.asyncIterator]
is used.
selector(item, index)
should return the object to yield. The second parameter is the index
of the item as it appeared in the source sequence.
example.js
const map = require('@async-generators/map').default;
async function main() {
async function* source() {
yield "hello"; yield "world";
}
let mapped = map(source(),
(x, i) => {
return {
value: x.toString(),
index: i
}
});
for await (let item of mapped) {
console.log(item);
}
}
main();
Execute with the latest node.js:
node --harmony-async-iteration example.js
output:
{ value: 'hello', index: 0 }
{ value: 'world', index: 1 }
This library is fully typed and can be imported using:
import map from '@async-generators/map');
It is also possible to directly execute your properly configured typescript with ts-node:
ts-node --harmony_async_iteration foo.ts