Options
All
  • Public
  • Public/Protected
  • All
Menu

A BaseChannel serves as a way to send asynchronous values across concurrent lines of execution.

Type parameters

  • T

Hierarchy

Index

Constructors

constructor

  • new BaseChannel<T>(bufferCapacity?: number): BaseChannel<T>
  • Create a new Channel.

    Type parameters

    • T

    Parameters

    • bufferCapacity: number = 0

      The maximum number of items to buffer. Defaults to 0; i.e. all push()/throw() calls will wait for a matching then() call.

    Returns BaseChannel<T>

Properties

Protected _buffer

_buffer: Promise<T>[] = ...

A list of buffered items in the channel

Protected _receivers

_receivers: { reject: (err: any) => unknown; resolve: (value: MaybePromise<T>) => unknown }[] = ...

A list of receivers waiting for an item to be sent

Protected _senders

_senders: { item: Promise<T>; reject: (err: any) => unknown; resolve: () => unknown }[] = ...

List of senders waiting for a receiver / buffer space

Readonly bufferCapacity

bufferCapacity: number = 0

Accessors

bufferSize

  • get bufferSize(): number
  • The number of items currently buffered.

    Returns number

closed

  • get closed(): boolean
  • True if this channel is closed and no longer accepts new values.

    Returns boolean

done

  • get done(): boolean
  • Returns true if this channel is closed and contains no buffered items or waiting senders.

    Returns boolean

onClose

  • get onClose(): Promise<void>
  • A Promise that will resolve when this Channel is closed.

    Returns Promise<void>

Methods

[Symbol.asyncIterator]

  • [Symbol.asyncIterator](): AsyncGenerator<T, any, unknown>
  • Enables async iteration over the channel. The iterator will stop and throw on the first error encountered.

    Returns AsyncGenerator<T, any, unknown>

Protected _send

  • _send(item: Promise<T>): Promise<void>
  • Send the given Item. Returns a Promise that resolves when sent.

    Parameters

    • item: Promise<T>

    Returns Promise<void>

clear

  • clear(): Promise<T>[]
  • Clear the channel of all buffered items. Also throws a ChannelClearedError to awaiting senders. Does not close the Channel.

    Returns Promise<T>[]

close

  • close(clear?: boolean): void
  • Close this channel.

    Parameters

    • clear: boolean = false

      Pass true to clear all buffered items / senders when closing the Channel. Defaults to false.

    Returns void

get

  • get(): Promise<T>
  • Wait for the next value (or error) on this channel.

    Returns Promise<T>

    A Promise that resolves/rejects when the next value (or error) on this channel is emitted.

interrupt

  • interrupt(error: unknown): void
  • Throws the given error to all waiting receivers. Useful if you want to interrupt all waiting routines immediately.

    Parameters

    • error: unknown

    Returns void

push

  • push(value: T | PromiseLike<T>): Promise<void>
  • Send a new value over the channel.

    Parameters

    • value: T | PromiseLike<T>

      The value to send, or a Promise resolving to a value.

    Returns Promise<void>

    A Promise that resolves when the value has been successfully pushed.

then

  • then<U, V>(onvalue?: null | ((value: T) => MaybePromise<U>), onerror?: null | ((error: any) => MaybePromise<V>)): Promise<U | V>
  • Wait for the next value (or error) on this channel and process it. Shorthand for chan.get().then(...).

    Type parameters

    • U = T

    • V = never

    Parameters

    • Optional onvalue: null | ((value: T) => MaybePromise<U>)
    • Optional onerror: null | ((error: any) => MaybePromise<V>)

    Returns Promise<U | V>

throw

  • throw(error: unknown): Promise<void>
  • Throw a new error in the channel. Note that errors are also buffered and subject to buffer capacity.

    Parameters

    • error: unknown

    Returns Promise<void>

    A Promise that resolves when the error has been successfully thrown.

Generated using TypeDoc