Giter VIP home page Giter VIP logo

memoizer's Introduction

Memoizer

Description

Memoizer allows you to memoize values. You can provide a fallback function that will be in charge of retrieving the missing keys when you try to access them.

Usage

Usage with a fallback

When you initialize the memoizer with a fallback it use it to retrieve the missing key value and memoize it.

    // initialize the memoizer

    // the fallback retrieves the value from the db
    // or whatever async (or sync) source you're using.
    async function fallback(key){
        return await mydb.findById(key);
    }

    const { set, get } = Memoizer(fallback);

    // set values
    set(1, {name:'John Cage', age: 24})
    set(2, {name:'John Smith', age: 25})

    // get values
    const info = await get(1);

    // this will retrieve the value from the fallback
    const anotherValue = await get(3);

    // next time it's accessed
    // it'll be already memoized
    const anotherValue2 = await get(3);

Usage without a fallback

When you initialize the memoizer without a fallback it will throw an error when you try to access a key not already set.

    // initialize the memoizer
    const { set, get } = Memoizer();

    // set values
    set(1, {name:'John Cage', age: 24});
    set(2, {name:'John Smith', age: 25});

    // get values
    const info = await get(1);

    // this will throw an error
    const anotherValue = await get(3);

Another options

Overwrite

    // initialize the memoizer
    const { set, get } = Memoizer();

    // set values
    set(1, {name:'John Cagex', age: 24});

    // this won't change the current value
    set(1, {name:'John Cage', age: 25});

    // this will change the current value
    set(1, {name:'John Cage', age: 25}, true);

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.