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

    Class StatefulRpc<Result, Params>

    有状态的 RPC 等待注册表。

    对同一个 key 的多个并发调用方共享同一次异步结果:任意一方调用 resolve(key, result)reject(key, error) 时,所有等待该 key 的 Promise 会同时被 settle。

    每个 task 拥有独立的定时器。当任意一个 task 超时时,onTimeout 会 调用 settle(key),将该 key 下的所有 task 一并 reject(含尚未 超时的 task)。如需自定义超时逻辑,子类可覆盖 protected onTimeout

    const rpc = new StatefulRpc<UserProfile, { userId: string }>();

    // 多个调用方等待同一个 key
    const p1 = rpc.pending('user:42', { userId: '42' });
    const p2 = rpc.pending('user:42', { userId: '42' });

    // 外部拿到数据后 resolve,p1 和 p2 同时得到结果
    rpc.resolve('user:42', profile);

    Type Parameters

    • Result = object
    • Params = object
    Index

    Constructors

    Properties

    onTimeout: (item: PendingItem<Result, Params>) => void = ...

    task 超时时触发,默认行为:以 TimeoutError reject 整个 key 下的所有 task。

    子类可覆盖此方法实现自定义超时策略(如只 reject 超时的单个 task)。

    Accessors

    Methods

    • 返回当前挂起的 task 数量。

      Parameters

      • Optionalkey: string

        指定 key 时只统计该 key;省略时统计全部

      Returns number

    • 注册一个等待 key 结果的 Promise。

      同一个 key 可以多次调用 pending();所有调用方会在同一次 settle() 时一起被 resolve 或 reject。

      Parameters

      • key: string

        资源标识,与 resolve / reject / abort 对应

      • params: Params

        本次请求的参数,会附加到 task 描述中

      • Optionaltimeout: number

        覆盖实例默认超时时间(毫秒)

      Returns Promise<Result>

    • 以指定的 settled 结果一次性 settle key 下的所有 task, 并触发对应事件。settle 后该 key 的所有 task 及定时器均被清除。

      执行顺序:先 resolve/reject 所有 pending Promise, 再触发事件通知。事件仅作通知之用,不阻塞 settle 流程, 其错误由 emitter 的 onError 接管(不会中断后续处理)。

      Parameters

      Returns this

      this,支持链式调用

    • resolve 指定 key 的所有 task。

      Parameters

      • key: string

        资源标识

      • result: Result

        返回值

      Returns this

      this,支持链式调用

    • reject 指定 key 的所有 task。

      Parameters

      • key: string

        资源标识

      • result: unknown

        错误原因

      Returns this

      this,支持链式调用

    • RpcAbortError 中止指定 key 的所有 task。

      Parameters

      • key: string

        资源标识

      • Optionalreason: unknown

        可选的中止原因,会附加到 RpcAbortError.reason

      Returns this

      this,支持链式调用

    • RpcAbortError 中止所有 key 下的全部 task。 通常在连接断开、组件卸载等场景下调用。

      Parameters

      • Optionalreason: unknown

        可选的中止原因

      Returns this

      this,支持链式调用