@meld-ts/core
    Preparing search index...

    Function singleton

    • 单例工厂

      同步工厂返回 T,异步工厂返回 Promise。 异步分支内部处理并发竞态:多个并发调用只执行一次工厂,共享同一个 inflight Promise。

      Type Parameters

      • F extends (...args: any[]) => Promise<any>

      Parameters

      • factory: F

        工厂函数(同步或异步均可)

      Returns (...args: Parameters<F>) => ReturnType<F>

      包装后的函数,首次调用执行工厂,后续调用直接返回缓存实例

      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
    • 单例工厂

      同步工厂返回 T,异步工厂返回 Promise。 异步分支内部处理并发竞态:多个并发调用只执行一次工厂,共享同一个 inflight Promise。

      Type Parameters

      Parameters

      • factory: F

        工厂函数(同步或异步均可)

      Returns (...args: Parameters<F>) => ReturnType<F>

      包装后的函数,首次调用执行工厂,后续调用直接返回缓存实例

      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