lazy-eval
Version:
Library to do lazy evaluation with Typescript
88 lines (71 loc) • 1.61 kB
Markdown
Simple and small library to do lazy evaluation (and memoization) with Javascript.
## Example
### Basic
```javascript
import lazy from 'lazy-eval';
let counter = 0;
const executor = () => {
counter += 1;
return 'result';
};
const lazyVal = lazy(executor);
console.log(counter); // 0
console.log(lazyVal()); // 'result'
console.log(counter); // 1
console.log(lazyVal()); // 'result'
console.log(counter); // 1
console.log(lazyVal.isLazy); // true
```
```javascript
import lazy from 'lazy-eval';
let counter = 0;
const lazyVal = lazy(() => {
counter += 1;
return 1;
});
const lazyOp = lazyVal.then((v1) => lazy(() => {
counter += 1;
return v1 + 1;
}));
console.log(counter); // 1
console.log(lazyOp()); // 2
console.log(counter); // 2
console.log(lazyOp()); // 2
console.log(counter); // 2
```
```
import lazy from 'lazy-eval';
let counter = 0;
const lazyVal = lazy(() => {
counter += 1;
return 1;
});
const lazyOp = lazyVal.map(v => {
counter += 1;
return v + 1;
});
console.log(counter); // 0
console.log(lazyOp()); // 2
console.log(counter); // 2
console.log(lazyOp()); // 2
console.log(counter); // 2
```
```typescript
import { default as lazy, Lazy } from 'lazy-eval';
let counter = 0;
const executor = (): string => {
counter += 1;
return 'result';
};
const lazyVal: Lazy<string> = lazy(executor);
console.log(counter); // 0
console.log(lazyVal()); // 'result'
console.log(counter); // 1
console.log(lazyVal()); // 'result'
console.log(counter); // 1
console.log(lazyVal.isLazy); // true
```