import "./_dnt.polyfills.js"; import type { IterableItem } from "./iterable.js"; import { type PromiseMaybe } from "./promise-helper.js"; import type { PureEvent } from "./pure_event.js"; export * from "./promise-helper.js"; export type Timmer = (resolve: (result: T) => void, reject: (reason?: unknown) => void) => Timmer.Clear; export declare namespace Timmer { type Clear = () => void; type From> = T extends number ? Timmer : T; type Type = T extends Timmer ? Timmer : never; type FromType> = T extends number ? void : T extends Timmer ? R : never; } export declare const timmers: { timeout: (ms: number) => Timmer; raf: Timmer; microtask: Timmer; eventTarget: (target: Pick, eventType: string, filter?: (event: T) => boolean | void) => Timmer; from: >(ms: T) => Timmer.From; }; /** * setTimeout/clearTimeout 的 promise 版本 * @example * ```ts * const d = delay(1000) * * await d; // is promise * * d.cancel(); // clearTimeout * * d.cancel('some reason'); // clearTimeout and reject promise * * const ac = new AbortController() * const d = delay(1000, { signal: ac.signal }) // with AbortSignal * ac.abort('some reason'); // clearTimeout and reject promise * ``` * * 如果 ms = 0,那么会使用 queueMicrotask 而不是setTimeot,当然cancel仍然是可以工作的 */ export declare const delay: >(ms: T, options?: { signal?: AbortSignal | null; disposer?: PureEvent; }) => delay.Delayer>; export declare namespace delay { type Delayer = Promise & { cancel(cause?: unknown): void; }; } export declare const promise_try: (fn: () => R) => Promise>>; export type PromiseOnceThenTask = { key?: unknown; resolve?: null | ((value: T) => void); reject?: null | ((error: any, value?: T) => void); }; /** * 一个内存安全的、只专注于执行回调 promise then 方法。 * 因为 promise.then 是会创建一个新的 promise 的,在某些场景下,这会带来严重的内存问题,比如说,如果你将一个 promise 作为一个锁 * 而如果你只是想进行回调注册,使用这个方法。 * * @param promise * @param onfulfilled * @param onrejected * @returns */ export declare const promise_once_then:

, T = Awaited

>(promise: P, task: PromiseOnceThenTask) => (() => void); export declare const promise_once_then_cancel:

, T = Awaited

>(promise: P, task: PromiseOnceThenTask) => void; export type PromiseRaceOptions = { ifEmpty?: () => PromiseMaybe; }; export declare const promise_safe_race: , T = Awaited>>(values: V, options?: PromiseRaceOptions) => PromiseMaybe; //# sourceMappingURL=promise.d.ts.map