An AsyncReiterable is an append-only collection that allows multiple asynchronous iterations.
npm install asyncreiterable


An AsyncReiterable is an append-only collection that allows _multiple asynchronous iterations_.
Each time the iterator() method of this AsyncReiterable is called,
a new AsyncIterator is produced.
This package can be used in cases where you need an AsyncIterator,
but you need to be able to iterate over them _multiple times_.
```
$ npm install asyncreiterable
At the time of writing, this package provides AsyncReiterableArray,AsyncReiterable
an array-backed implementation of the interface.
It can be constructed in different ways through the following static methods:
`javascript
import {AsyncReiterableArray} from "asyncreiterable";
// Creates an ended AsyncReiterable with the given data elements
AsyncReiterableArray.fromFixedData([1, 2, 3])
// Creates an open-ended AsyncReiterable with the given initial data elements
AsyncReiterableArray.fromInitialData([1, 2, 3])
// Creates an open-ended AsyncReiterable with no initial data elements
AsyncReiterableArray.fromInitialEmpty()
`
Data elements can only be _pushed_,
no data elements can be removed.
The iterable becomes _ended_ when null is pushed.
`javascript
const iterable = AsyncReiterableArray.fromInitialData([1, 2, 3]);
// Add data elements
iterable.push(4);
iterable.push(5);
iterable.push(6);
// End the iterable
iterable.push(null);
`
AsyncReiterable that are either ended or not ended yet can both be iterated.
The iterator() method returns an AsyncIteratorAsyncReiterable
that will contains all current and future data elements in this .AsyncReiterable
It will be ended once the is ended.
`javascript
const iterable = AsyncReiterableArray.fromInitialData([1, 2])
const it1 = iterable.iterator();
const it2 = iterable.iterator();
it1.on('data', console.log);
it2.on('data', console.log);
iterable.push(3);
iterable.push(4);
iterable.push(null);
// Output from both iterators:
// 1
// 2
// 3
// 4
``
This code is released under the MIT license.