promise-abortable
Promise lib for aborting in chain.
Features
- Abort promise
- Abort in promise chain
- Abort nesting promise
- Return promise after abort
Browser Support
Any browser that supports Promise.
33 ✔ | 29 ✔ | 8 ✔ | 20 ✔ | 12 ✔ |
If run in others, use Babel, or include script polyfill.min.js
below.
Install
$ npm install promise-abortable
The IIFE build is also available on unpkg:
<script src="https://unpkg.com/promise-abortable/dist/es5.min.js"></script> <!-- 1KB, recommend -->
<script src="https://unpkg.com/promise-abortable/dist/es6.min.js"></script> <!-- 1KB -->
<script src="https://unpkg.com/promise-abortable/dist/polyfill.min.js"></script> <!-- 19KB -->
Usage
// 1. Ininstantiation
const promise = new AbortablePromise((resolve, reject, signal) => {
// 2. Set abort handler
signal.onabort = reason => {
// 4. `reason` is from `promise.abort(reason)`
};
});
// 3. Invoke `signal.onabort(reason)`
promise.abort(reason);
Pseudo code
See full examples here.
Promise abort
const promise = new AbortablePromise(...);
promise.abort();
Clain abort
const promise = new AbortablePromise(...).then(...).catch(...);
promise.abort();
Nesting abort
const promise = new AbortablePromise(...).catch(value => {
return new AbortablePromise(...);
});
// promise1 pending
promise.abort(); // abort promise1 and run catch
// promise2 pending
promise.abort(); // abort promise2
Promise after abort
const promise = new AbortablePromise(...);
promise.abort().then(...).catch(...);
Promise.all abort
const promise = AbortablePromise.all([...]);
promise.abort();
Promise.race abort
const promise = AbortablePromise.race([...]);
promise.abort();