and3k5 / lazy-var.js

Lazy initialize values

Home Page:https://and3k5.github.io/lazy-var.js/

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

lazy-var.js

GitHub Workflow Status npms.io (quality) npm bundle size GitHub code size in bytes npm GitHub

Lazy initialize values

Idea

A way to lazy-initialize data. Executes the initializer first time calling .get() and returns the same value afterwards. Supports both synchronous and asynchronous initializers.

The solution is inspired by System.Lazy from dotnet

Install

npm

lazy-var @ npm

or install with npm cli

dev@dingdong:~/my-project$ npm install lazy-var

or yarn

dev@dingdong:~/my-project$ yarn add lazy-var

Usage

Try it on runkit

// Setup lazy variable
import { lazy } from "lazy-var";
import { heavyMethod } from "./lib/stuff.js";

var lazyData = lazy(async () => {
    console.log("Request for data");
    return await heavyMethod()
});

// Later on: Retrieve the data

var data = await lazyData.get();
// outputs: "Request for data"
// returns: whatever data from heavyMethod

var data2 = await lazyData.get();
// no output
// returns: same data as data

About

Lazy initialize values

https://and3k5.github.io/lazy-var.js/

License:MIT License


Languages

Language:JavaScript 61.9%Language:TypeScript 38.1%