0.3.0 • Published 6 years ago

cached-iterable v0.3.0

Weekly downloads
1,703
License
Apache-2.0
Repository
github
Last release
6 years ago

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