Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Promise.cancelable = pendingPromise => {
- let lazyCb = null;
- let settled = false;
- let canceled = false;
- const promise = Promise.resolve(pendingPromise).then(() => {
- settled = true;
- if (canceled) {
- return;
- }
- return lazyCb && pendingPromise.then(lazyCb);
- });
- return {
- then: cb => {
- if (canceled) {
- return;
- }
- if (settled) {
- promise.then(cb);
- return;
- }
- lazyCb = cb;
- },
- cancel: () => {
- if (!settled) {
- canceled = true;
- }
- },
- };
- };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement