Skip to main content
Module

x/defer/mod.ts>Defer

Robust TypeScript API for deferred handling of Promises. Supports event listeners and custom state-specific callbacks.
Latest
class Defer
extends Promise<T>
Re-export
import { Defer } from "https://deno.land/x/defer@0.6.0/mod.ts";

Creates a Promise with reject and resolve functions placed as methods on the promise object itself. Also adds a state property, which will be either "pending", "settled" or "rejected". The state property can be "watched" for changes by assigning a function to onstatechange

Examples

Example 1

import { Defer } from "./defer.ts";

const p = defer<number>();
// ...
p.resolve(42);

Constructors

new
Defer(executor?: Executor<T>)
new
Defer(handlers: EventHandlers<T>)
new
Defer(executor: Executor<T>, handlers?: EventHandlers<T>)
new
Defer(executorOrHandlers: Executor<T> | EventHandlers<T>, handlers?: EventHandlers<T>)
new
Defer(executor?: Executor<T> | EventHandlers<T>, handlers?: EventHandlers<T>)

Type Parameters

optional
T = unknown

Properties

readonly
executor: Executor<T> | undefined
readonly
handlers: EventHandlers<T>
readonly
listeners
onfulfilled
onrejected
onresolved
onsettled
onstatechange
readonly
reason: unknown
readonly
value: T | undefined

Methods

reject(reason?: unknown)
resolve(value?: T | PromiseLike<T>)
then<TResult1 extends T = T, TResult2 = never>(onfulfilled: (value: T) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: unknown) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>
then<TResult1 extends T = T, TResult2 = never>(onfulfilled: (value: T) => TResult1 | PromiseLike<TResult1>, onrejected?: ((reason: unknown) => TResult2 | PromiseLike<TResult2>) | null): Promise<TResult1 | TResult2>
then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | undefined | null, onrejected?: ((reason: unknown) => TResult2 | PromiseLike<TResult2>) | undefined | null): Promise<TResult1 | TResult2>
[Symbol.for("nodejs.util.inspect.custom")](
depth: number,
options: any,
inspect: (value: unknown, ...args: unknown[]) => string,
): string

Static Methods

all<T>(values: Iterable<T | PromiseLike<T>>): Defer<Awaited<T>[]>
allSettled<T>(values: Iterable<T | PromiseLike<T>>): Defer<PromiseSettledResult<Awaited<T>>[]>
reject<T = never>(reason?: unknown): Defer<T>
resolve<T>(value?: T | PromiseLike<T>): Defer<T>
[Symbol.hasInstance](that: unknown): that is Defer
interface Defer
implements Promise<T>, EventHandlers<T>, EventListeners<T>
Re-export
import { type Defer } from "https://deno.land/x/defer@0.6.0/mod.ts";

Properties

readonly
state: State

Methods

resolve(value?: T | PromiseLike<T>): void | T | Promise<T>
reject(reason?: unknown): void
then<TResult1 extends T = T, TResult2 = never>(onfulfilled: (value: T) => TResult1 | PromiseLike<TResult1>, onrejected: (reason: unknown) => TResult2 | PromiseLike<TResult2>): Promise<TResult1 | TResult2>
then<TResult1 extends T = T, TResult2 = never>(onfulfilled: (value: T) => TResult1 | PromiseLike<TResult1>, onrejected?: ((reason: unknown) => TResult2 | PromiseLike<TResult2>) | null): Promise<TResult1 | TResult2>
then<TResult1 = T, TResult2 = never>(onfulfilled?: ((value: T) => TResult1 | PromiseLike<TResult1>) | undefined | null, onrejected?: ((reason: unknown) => TResult2 | PromiseLike<TResult2>) | undefined | null): Promise<TResult1 | TResult2>