UNPKG

shelving

Version:

Toolkit for using data in JavaScript.

32 lines (31 loc) 1.67 kB
import type { Deferred } from "../util/async.js"; import { AbstractSequence } from "./AbstractSequence.js"; /** * Deferred sequence of values that can be async iterated and new values can be published. * - Implements `AsyncIterable` so values can be iterated over using `for await...of` * - Implements `Promise` so the next value can be awaited. * - Implements `Deferred` so next values can be resolved or rejected. */ export declare class DeferredSequence<T = void> extends AbstractSequence<T, void, void> implements Deferred<T>, Promise<T> { /** * Next deferred to be rejected/resolved, or `undefined` if we haven't requested one yet.. * - Only create the deferred on demand, because we don't want to reject a deferred that isn't used to or it would throw an unhandled promise error. */ private _deferred; /** Get the next promise to be deferred/rejected. */ get promise(): Promise<T>; /** Resolve the current deferred in the sequence. */ resolve(value: T): void; private _nextValue; /** Reject the current deferred in the sequence. */ reject(reason: unknown): void; private _nextReason; /** Fulfill the current deferred by resolving or rejecting it. */ private _fulfill; next(): Promise<IteratorResult<T, void>>; then<X = T, Y = never>(onNext?: (v: T) => X | PromiseLike<X>, onError?: (r: unknown) => Y | PromiseLike<Y>): Promise<X | Y>; catch<Y>(onError: (r: unknown) => Y | PromiseLike<Y>): Promise<T | Y>; finally(onFinally: () => void): Promise<T>; /** Resolve the current deferred from a sequence of values. */ through(sequence: AsyncIterable<T>): AsyncIterator<T>; }