Skip to content

Documentation / @eventkit/base / CallbackSubscriber

Class: CallbackSubscriber<T> ​

A specialized Subscriber that invokes a callback function for each value emitted by the observable.

CallbackSubscriber extends the base Subscriber class to provide a convenient way to process observable values through a callback function. When a value is emitted by the observable, the callback is scheduled to be executed via the observable's scheduler.

This class is typically used internally by the AsyncObservable.subscribe method to create a subscription that processes values through user-provided callbacks.

Extends ​

Type Parameters ​

Type ParameterDescription
TThe type of values emitted by the observable

Constructors ​

Constructor ​

ts
new CallbackSubscriber<T>(observable, callback): CallbackSubscriber<T>

Creates a new CallbackSubscriber instance.

Parameters ​

ParameterTypeDescription
observableAsyncObservable<T>The AsyncObservable to subscribe to
callbackSubscriberCallback<T>The function to be called for each emitted value

Returns ​

CallbackSubscriber<T>

Overrides ​

Subscriber.constructor

Properties ​

callback ​

ts
protected callback: SubscriberCallback<T>;

Methods ​

cancel() ​

ts
cancel(): Promise<void>

Cancels the subscriber, meaning that the generator will be disposed of, and any resources held by the subscriber will be released.

Calling this method starts an immediate cleanup of the Subscriber. In the case that you want to be notified of when the subscriber has closed without causing an interrupt, you can use the #then method.

Note that the promise returned by this method doesn't represent the actual execution of the generator, meaning that any errors that occur during the execution of the generator will not be reflected in the promise returned by this method. You can observe the status of the current execution by using the #then method or catching any errors using the #catch method. Because this class implements PromiseLike, you can also use the Subscriber in an await expression to yield the state of the generator's execution.

Returns ​

Promise<void>

A promise that resolves when the subscriber has been cleaned up.

Inherited from ​

Subscriber.cancel


catch() ​

ts
catch<TResult>(onrejected?): Promise<TResult>

Attaches a callback for only the rejection of the Promise returned by this AsyncObservable. This is a shorthand for .then(undefined, onrejected).

Type Parameters ​

Type ParameterDefault type
TResultnever

Parameters ​

ParameterTypeDescription
onrejected?null | (reason) => TResult | PromiseLike<TResult>The callback to execute when the Promise is rejected. This callback takes a reason parameter which contains the rejection reason.

Returns ​

Promise<TResult>

A Promise for the completion of the callback. If the callback returns a value or a Promise that resolves, the returned Promise will resolve with that value. If the callback throws or returns a rejected Promise, the returned Promise will reject with that reason.

Inherited from ​

Subscriber.catch


finally() ​

ts
finally(onfinally?): Promise<any>

Schedules a cleanup action that gets executed when the subscriber is disposed of. Optionally, a callback can be provided to inform the behavior of the created action.

Parameters ​

ParameterTypeDescription
onfinally?null | () => voidOptional callback to execute after completion or error

Returns ​

Promise<any>

A promise that resolves when the action has completed

Inherited from ​

Subscriber.finally


then() ​

ts
then<TResult1, TResult2>(onfulfilled?, onrejected?): Promise<TResult1 | TResult2>

Returns a promise that resolves when the subscriber has completed execution and cleaned up, or rejects if an error occurs during. This allows Subscriber instances to be used with await expressions and Promise methods like then(), catch(), and finally().

It's worth noting that while the Promise returned by this object is representative of the execution of the generator, that doesn't mean that this is the only place where errors will be thrown. When using control flow statements like next() or for-await-of loops, errors that occur either in evaluating the next value or in the cleanup when there are no more values will also be thrown there. In those cases, you can still use the promise returned here as a "catch all" for any errors that occur during the execution of the generator. This is helpful when you don't have visibility into the logic that iterates over the generator, but you still want to be notified of any errors that occur.

Type Parameters ​

Type ParameterDefault type
TResult1void
TResult2never

Parameters ​

ParameterTypeDescription
onfulfilled?null | (value) => TResult1 | PromiseLike<TResult1>Optional callback to execute when the promise resolves successfully
onrejected?null | (reason) => TResult2 | PromiseLike<TResult2>Optional callback to execute when the promise rejects with an error

Returns ​

Promise<TResult1 | TResult2>

A promise that resolves with the result of the onfulfilled/onrejected handlers

Inherited from ​

Subscriber.then

Released under the MIT License.