# 运行时

# Singleton

根据单例生成是否需要异步操作,分为两类,不可混用。

SlugFunction 内置单例形式为 sf.* 注意使用前缀避免冲突

用法:

// 实际使用时,可先声明函数
const getXXX = () => getSingleton('XXX', async () => 1)
// 然后在要用到单例的地方使用
const XXX = getXXX()

使用本方法声明的单例在未使用时会被 TreeShacking 移除

  1. getSingleton

异步单例

定义:

export declare const getSingleton: <T = any>(key: string, builder: () => Promise<T>) => Promise<T>;

用法:

expect(await getSingleton('a', async () => 1 )).toBe(1)
expect(await getSingleton('a', async () => 2 )).toBe(1)
expect(await getSingleton('b', async () => 3 )).toBe(3)
  1. getSingletonSync

同步单例

定义:

export declare const getSingletonSync: <T = any>(key: string, builder: () => T) => T;

用法:

expect(getSingletonSync('a', () => 1 )).toBe(1)
expect(getSingletonSync('a', () => 2 )).toBe(1)
expect(getSingletonSync('b', () => 3 )).toBe(3)
更新于: 6/25/2021, 5:28:40 PM