单例工厂
同步工厂返回 T,异步工厂返回 Promise。 异步分支内部处理并发竞态:多个并发调用只执行一次工厂,共享同一个 inflight Promise。
工厂函数(同步或异步均可)
包装后的函数,首次调用执行工厂,后续调用直接返回缓存实例
const getDb = singleton(() => new Database());const db = getDb(); // 每次调用返回同一个实例 Copy
const getDb = singleton(() => new Database());const db = getDb(); // 每次调用返回同一个实例
const getClient = singleton(async () => { const client = new ApiClient(); await client.connect(); return client;});// 并发调用,只初始化一次const [a, b] = await Promise.all([getClient(), getClient()]);// a === b Copy
const getClient = singleton(async () => { const client = new ApiClient(); await client.connect(); return client;});// 并发调用,只初始化一次const [a, b] = await Promise.all([getClient(), getClient()]);// a === b
单例工厂
同步工厂返回 T,异步工厂返回 Promise。
异步分支内部处理并发竞态:多个并发调用只执行一次工厂,共享同一个 inflight Promise。