asyncreiterable
v2.0.0
Published
An AsyncReiterable is an append-only collection that allows multiple asynchronous iterations.
Downloads
1,979
Maintainers
Readme
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.
Install
$ npm install asyncreiterable
Usage
At the time of writing, this package provides AsyncReiterableArray
,
an array-backed implementation of the AsyncReiterable
interface.
Constructing
It can be constructed in different ways through the following static methods:
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()
Appending
Data elements can only be pushed, no data elements can be removed.
The iterable becomes ended when null
is pushed.
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);
Iterating
AsyncReiterable
that are either ended or not ended yet can both be iterated.
The iterator()
method returns an AsyncIterator
that will contains all current and future data elements in this AsyncReiterable
.
It will be ended once the AsyncReiterable
is ended.
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
License
This software is written by Ruben Taelman.
This code is released under the MIT license.