UNPKG

@msom/common

Version:

@msom/common

92 lines 3.48 kB
import { Nullable, createFunction } from "../../global"; import { OcPromiseRejectError } from "./OcPromiseError"; import { Cancel, OcPromiseExecutor, OcPromiseLike, OcPromiseStatus, PromiseLike, Reject } from "./types"; /** * OcPromise 类 - 扩展的 Promise 实现,支持取消操作 * @template R - 成功状态的返回值类型 * @template E - 错误类型,默认为 OcPromiseRejectError * @template C - 取消操作的原因类型 */ export declare class OcPromise<R, E extends Error | unknown = OcPromiseRejectError, C = unknown> implements OcPromiseLike<R> { /** 当前 Promise 的状态 */ status: OcPromiseStatus; /** 处理函数队列 */ private handlers; /** 存储当前值(完成值/错误/取消原因) */ data: R | E | C; /** 父 Promise,用于取消操作的传播 */ private parrent; /** * 创建 OcPromise 实例 * @param executor 执行器函数,接收 resolve、reject 和 cancel 函数 */ constructor(executor: OcPromiseExecutor<R, E, C>); /** * 添加完成、错误和取消的处理函数 */ then<TR = R, TE = never, TC = never>(onfulfilled?: Nullable | createFunction<[R, OcPromiseLike<TR> | PromiseLike<TR> | TR]>, onrejected?: Nullable | createFunction<[E, OcPromiseLike<TE> | PromiseLike<TE> | TE]>, oncanceled?: Nullable | createFunction<[C, OcPromiseLike<TC> | PromiseLike<TC> | TC]>): OcPromise<TR | TE | TC>; /** * 改变 Promise 状态 * @private * @template T - 目标状态类型 * @template D - 数据类型 * @param status - 新状态 * @param data - 相关数据 */ private changeStatus; /** * 执行处理函数队列 * @private */ private _runThens; /** * 取消 Promise * @param reason - 取消原因 */ cancel(reason: C): void; /** * 等待所有 Promise 完成 * @static * @template T - 元素类型 * @param proms - Promise 或值的可迭代对象 * @returns 包含所有结果的 Promise */ static all<T>(proms: Iterable<T | OcPromiseLike<Awaited<T>>>): OcPromise<Awaited<T>[]>; /** * 创建一个已完成的 Promise * @static * @template T - 值的类型 * @param value - 要解析的值 */ static resolve<T extends void | unknown = void>(value: T): OcPromise<Awaited<T>>; /** * 创建一个已拒绝的 Promise * @static * @template E - 错误类型 * @param reason - 拒绝原因 */ static reject<E extends OcPromiseRejectError | unknown = unknown>(reason: E): OcPromise<unknown, E>; /** * 添加取消处理函数 * @param oncanceled - 取消处理函数 */ canceled(oncanceled: Cancel<C>): OcPromise<void | R, OcPromiseRejectError, unknown>; /** * 添加错误处理函数 * @param onRejected - 错误处理函数 */ catch(onRejected: Reject<E>): OcPromise<void | R, OcPromiseRejectError, unknown>; /** 获取当前数据 */ getData(): R | E | C; /** 获取当前状态 */ getStatus(): OcPromiseStatus; } /** * 检查值是否为 OcPromise 实例 * @template PR - Promise 结果类型 * @template PE - Promise 错误类型 * @template PC - Promise 取消类型 * @param data - 要检查的值 */ export declare function isOcPromise<PR, PE extends Error | unknown = Error, PC = unknown>(data: unknown): data is OcPromise<PR, PE, PC>; //# sourceMappingURL=OcPromise.d.ts.map