rx-extra.with-abort
TypeScript icon, indicating that this package has built-in type declarations

0.0.0 • Public • Published

Rx Xtra: With Abort

withAbort lets an RxJS Observable be controlled by an AbortSignal. This is great for using Observables within a context that relies on the AbortController API.

Imagine the following marble diagram for an Observable, with time going from left to right.

Source Observable Marble Diagram

And imagine that we have an AbortSignal that we want to end that subscription. Its aborted state is initially false, but then an abort event eventually happens, changing its state to true.

Source Observable and Signal Diagram

We can use withAbort to create a new Observable that subscribes to the source, and unsubscribes when the signal switches.

Derived Observable

Want to go the other way, turning a function that uses the AbortController into an Observable? Check out rx-xtra.defer-abort!

rx-xtra.with-abort is part of Rx Xtra, a collection of RxJS utilities.

Created by Joel Shinness LinkTreeGithubBuy me a coffee!

Usage

withAbort<T>(signal:AbortSignal):MonoTypeOperatorFunction<T>

  • Parameters
  • Returns
    • MonoTypeOperatorFunction<T> An operator that takes a source Observable and returns a created Observable. The created observable will behave exactly like its source, except that it will complete when the signal aborts. If the signal has already aborted by the time the subscription happens, the created observable will behave like EMPTY and complete immediately on subscription without emitting any values.

Example

// From some library somewhere...
function someAbortableApi(cb:(next:(val:number) => void, signal:AbortSignal) => void){}

// In your app code...
const myObservable:Observable<number> = /* Some Observable */

someAbortableApi((next, signal) => {
  myObservable.pipe(
    withAbort(signal)
  ).subscribe(next);
});

Package Sidebar

Install

npm i rx-extra.with-abort

Weekly Downloads

0

Version

0.0.0

License

ISC

Unpacked Size

5.49 kB

Total Files

7

Last publish

Collaborators

  • joelcodes