Lazy Function
惰性求值把「真正的计算」推迟到第一次(或某次)取值时执行,可避免不必要的开销,并支持单次解析缓存。
项目中的实现
- 源码:
src/lazyFunction.ts - 导出:
LazyValue(类型)、deferValue、createOnceResolver、mapLazyValue
各函数示例
deferValue
import { deferValue } from 'wssf-kage-js';
const expensive = deferValue(() => 40 + 2);
expensive(); // => 42
createOnceResolver
import { createOnceResolver } from 'wssf-kage-js';
const once = createOnceResolver(() => Math.random());
once() === once(); // => true
mapLazyValue
import { mapLazyValue, deferValue } from 'wssf-kage-js';
const doubled = mapLazyValue(deferValue(() => 2), (n) => n * 2);
doubled(); // => 4
什么时候优先用
- 配置或依赖很重,但未必每条路径都会用到
- 希望明确区分「定义计算」与「执行计算」