@msom/common
Version:
@msom/common
92 lines • 3.48 kB
TypeScript
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