Git Product home page Git Product logo

async-memoize-one's Introduction

microlink

Last version Build Status Coverage Status NPM Status

Memoize the last result, in async way.

async-memoize-one simply remembers the last arguments, and if the function is next called with the same arguments then it returns the previous result.

It's used for micro-caching scenarios, where you want to prevent perform an action previously done during a short period of time.

No need to worry about cache busting mechanisms such as maxAge, maxSize, exclusions and so on which can be prone to memory leaks.

Install

$ npm install async-memoize-one --save

Usage

const get = require('util').promisify(require('simple-get'))
const memoizeOne = require('async-memoize-one')

const fetchData = memoizeOne(url => get(`https://api.microlink.io?url=${url}`))

;(async () => {
  // fecthing data for first time
  console.time('fetch')
  await fetchData('https://example.com/one')
  console.timeEnd('fetch')

  // served data from cache; no fetching!
  console.time('fetch')
  await fetchData('https://example.com/one')
  console.timeEnd('fetch')

  // previous execution parameters are different, so fetching again
  console.time('fetch')
  await fetchData('https://example.com/two')
  console.timeEnd('fetch')

  // previous execution parameters are different, so fetching again
  console.time('fetch')
  await fetchData('https://example.com/one')
  console.timeEnd('fetch')
})()

API

memoizeOne(fn, [isEqual], [options])

fn

Required
Type: function

Promise-returning or async function to be memoized.

isEqual

Type: function
Default: fast-deep-equal

The compare function to determinate if both executions are the same.

An equality function should return true if the arguments are equal. If true is returned then the wrapped function will not be called.

options

cachePromiseRejection

Type: boolean
Default: false

Cache rejected promises.

License

async-memoize-one © microlink.io, released under the MIT License.
Authored and maintained by Kiko Beats with help from contributors.

microlink.io · GitHub microlink.io · Twitter @microlinkhq

async-memoize-one's People

Contributors

kikobeats avatar prinzhorn avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.