Skip to content
Extensible memoize that allows plugin arbitrary cache implementation, supporting multiple layers of caches
TypeScript
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
dist
src
.gitignore
.travis.yml
LICENSE
README.md
package-lock.json
package.json
tsconfig.json

README.md

Build Status

Usage

import memoize from "extensible-memoize";
const getItem = memoize(fetchItem);

//define your fetch function:
function fetchItem(key: K): Promise<V> {
  //fetch the item identified by key
}

Note: if key is an object, its toString() method must return a unique hash.

Caching

By default, memoize uses a mem cache with no expiration. To specify your own caching implementation, pass an array of Caches as the second parameter.

interface Cache<K, V> {
  get: (key: K) => Promise<V>
  set: (key: K, value: V) => Promise<void>
}

const getItem = memoize(fetchItem, [cache1, cache2, ...]);

Memoize will first look for the item in cache1, then in cache2, and so on. If the item is not found in the caches, fetchItem will be called. Note that your cache implementations do not have to worry about dealing with concurrency, memoize will take care of that.

You can’t perform that action at this time.