make-cancellable-promise
Version:
Make any Promise cancellable.
20 lines (17 loc) • 444 B
text/typescript
export default function makeCancellablePromise<T>(promise: Promise<T>): {
promise: Promise<T>;
cancel(): void;
} {
let isCancelled = false;
const wrappedPromise: Promise<T> = new Promise((resolve, reject) => {
promise
.then((value) => !isCancelled && resolve(value))
.catch((error) => !isCancelled && reject(error));
});
return {
promise: wrappedPromise,
cancel() {
isCancelled = true;
},
};
}