cached-iterable
exposes two classes which implement the iterable
protocol:
CachedSyncIterable
,CachedAsyncIterable
.
You can wrap any iterable in these classes to create a new iterable which caches the yielded elements. This is useful for iterating over an iterable many times without depleting it.
cached-iterable
can be used both on the client-side and the server-side. You
can install it from the npm registry or use it as a standalone script (as the
CachedIterable
global).
npm install cached-iterable
import assert from "assert";
import {CachedSyncIterable} from "cached-iterable";
function * countdown(i) {
while (i--) {
yield i;
}
}
let numbers = new CachedSyncIterable(countdown(3));
// `numbers` can be iterated over multiple times.
assert.deepEqual([...numbers], [3, 2, 1, 0]);
assert.deepEqual([...numbers], [3, 2, 1, 0]);
For legacy browsers, the compat
build has been transpiled using Babel's env
preset. It requires the regenerator runtime provided by babel-polyfill.
import {CachedSyncIterable} from 'cached-iterable/compat';