# 运行时
# Singleton
根据单例生成是否需要异步操作,分为两类,不可混用。
SlugFunction 内置单例形式为 sf.*
注意使用前缀避免冲突
用法:
// 实际使用时,可先声明函数
const getXXX = () => getSingleton('XXX', async () => 1)
// 然后在要用到单例的地方使用
const XXX = getXXX()
使用本方法声明的单例在未使用时会被 TreeShacking 移除
- 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)
- 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)