跳到主要内容

Lazy Function

惰性求值把「真正的计算」推迟到第一次(或某次)取值时执行,可避免不必要的开销,并支持单次解析缓存。

项目中的实现

  • 源码: src/lazyFunction.ts
  • 导出: LazyValue(类型)、deferValuecreateOnceResolvermapLazyValue

各函数示例

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

什么时候优先用

  • 配置或依赖很重,但未必每条路径都会用到
  • 希望明确区分「定义计算」与「执行计算」