cached-iterable

Iterables which cache the values they yield

Downloads in past

Stats

StarsIssuesVersionUpdatedCreatedSize
cached-iterable
230.3.04 years ago5 years agoMinified + gzip package size for cached-iterable in KB

Readme

cached-iterable
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.

Installation

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

How to use

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]);

Compatibility

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';