# rx-xtra.defer-abort

> RxJS AbortController-compatible defer operator

Latest version **0.0.0** (published 2024-01-22) · ISC license · 0 weekly downloads

## Install

```sh
npm install rx-xtra.defer-abort
pnpm add rx-xtra.defer-abort
yarn add rx-xtra.defer-abort
bun add rx-xtra.defer-abort
```

## Health

**Score 25/100 (F)** — status: abandoned.

Positive: has types; esm support; no vulnerabilities.

Warnings: low downloads; pre 1.0.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 0.0.0 |
| Published | 2024-01-22 |
| First published | 2024-01-22 |
| Weekly downloads | 0 |
| License | ISC |
| TypeScript types | bundled |
| Module format | ESM + CommonJS |
| Dependencies | 0 |
| Unpacked size | 7 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| GitHub stars | 0 |
| Author | https://github.com/JoelCodes |
| Maintainers | joelcodes |
| Keywords | reactive extensions, rx, RxJS, rxjs, operators, utilities, AbortController, AbortController API, abortcontroller, AbortSignal, abortsignal, abort, interop, interoperability, abortable |

## Links

- npm: https://www.npmjs.com/package/rx-xtra.defer-abort
- Repository: https://github.com/JoelCodes/rx-xtra
- Homepage: https://github.com/JoelCodes/rx-xtra#readme
- Issues: https://github.com/JoelCodes/rx-xtra/issues
- npm.io page: https://npm.io/package/rx-xtra.defer-abort

## Alternatives

- [@lexical/table](https://npm.io/package/@lexical/table.md) — 3.0M weekly downloads
- [mantine-datatable](https://npm.io/package/mantine-datatable.md) — 98.2K weekly downloads
- [react-native-collapsible-tab-view](https://npm.io/package/react-native-collapsible-tab-view.md) — 70.6K weekly downloads
- [@handsontable/vue3](https://npm.io/package/@handsontable/vue3.md) — 16.1K weekly downloads
- [vuewordcloud](https://npm.io/package/vuewordcloud.md) — 7.2K weekly downloads

## Recent versions

- 0.0.0 (latest) — 2024-01-22

## README

# Rx Xtra: Defer Abort

`deferAbort` takes functions that use the [AbortController API](https://developer.mozilla.org/en-US/docs/Web/API/AbortController) and coerce them into Observables.

Want to go the other way, making an Observable work with the AbortController?  Check out [`rx-xtra.with-abort`](https://www.npmjs.com/package/rx-xtra.with-abort)!

`rx-xtra.defer-abort` is part of [`Rx Xtra`](https://github.com/JoelCodes/rx-xtra), a collection of [RxJS](https://rxjs.dev/) utilities.

Created by Joel Shinness [LinkTree](https://linktr.ee/yesthatjoelshinness) • [Github](https://github.com/JoelCodes) • [Buy me a coffee!](https://ko-fi.com/yesthatjoelshinness)

## Usage

`deferAbort<T>(factory:(signal:AbortSignal) => ObservableInput<T>)`

* Parameters
  * `factory`: `(signal:AbortSignal) => ObservableInput<T>` Accepts an [`AbortSignal`](https://developer.mozilla.org/en-US/docs/Web/API/AbortSignal) and returns an [`ObservableInput<T>`](https://rxjs.dev/api/index/type-alias/ObservableInput), e.g. an [`Observable<T>`](https://rxjs.dev/api/index/class/Observable), or anything that can be coerced into an `Observable<T>`, such as an Array, Promise, Iterable, or AsyncIterable.
* Returns
  * [`Observable<T>`](https://rxjs.dev/api/index/class/Observable)


Abortable allows functions and API's that use the [AbortController API](https://developer.mozilla.org/en-US/docs/Web/API/AbortController) for cleanup to receive that signal when the subscription ends.

## Examples

```ts
// This represents some API that uses an AbortSignal to perform cleanup
// In this case, it ends the loop.
async function *countUntilAbort(signal:AbortSignal):AsyncIterable<number>{
  for(let i = 1; true; i++){
    await new Promise(resolve => setTimeout(resolve, 1000));
    if(signal.aborted) {
      console.log('Aborted');
      break;
    }
    yield i;
  }
}

deferAbort(countUntilAbort)
  .pipe(take(3))
  .subscribe({
    next(val){ console.log('Next', val); },
    complete(){ console.log('Complete'); },
    error(err){ console.log('Error', err); }
  });

// CONSOLE:
// Next 1
// Next 2
// Next 3
// Complete
// Aborted
```

---
_Source: https://npm.io/package/rx-xtra.defer-abort · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
