跳到主要内容

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

什么时候优先用​

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