Lazy initialize values
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
or install with npm cli
dev@dingdong:~/my-project$ npm install lazy-var
or yarn
dev@dingdong:~/my-project$ yarn add lazy-var
// 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