wrap an async/sync Iterable as async Iterable.
package requires a system that supports async-iteration, either natively or via down-compiling
npm install @async-generators/iterable --save
yarn add @async-generators/iterable
This package's main
entry points to a commonjs
dist.
The module
entry points to a es2015
module dist. Both require native async-generator support, or be down-compiled with a webpack loader.
iterable()
checks to see if source is iterable (either async of sync) and returns an object with [Symbol.asyncIterator]
that wraps the source iterable.
source
must have a [Symbol.asyncIterator]
or [Symbol.iterator]
property. If both are present only [Symbol.asyncIterator]
is used. If none are present then an error is thrown.
example.js
const iterable = require('@async-generators/iterable').default;
function* source() {
yield 1; yield 2; yield* [3, 4];
}
async function main(){
for await (let item of iterable(source())){
console.log(item);
}
}
main();
Execute with the latest node.js:
node --harmony-async-iteration example.js
output:
1
2
3
4
This library is fully typed and can be imported using:
import iterable from '@async-generators/iterable');
It is also possible to directly execute your properly configured typescript with ts-node:
ts-node --harmony_async_iteration example.ts