Advertisement
Guest User

Untitled

a guest
Oct 17th, 2019
109
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.54 KB | None | 0 0
  1. Promise.cancelable = pendingPromise => {
  2. let lazyCb = null;
  3. let settled = false;
  4. let canceled = false;
  5.  
  6. const promise = Promise.resolve(pendingPromise).then(() => {
  7. settled = true;
  8. if (canceled) {
  9. return;
  10. }
  11.  
  12. return lazyCb && pendingPromise.then(lazyCb);
  13. });
  14.  
  15. return {
  16. then: cb => {
  17. if (canceled) {
  18. return;
  19. }
  20.  
  21. if (settled) {
  22. promise.then(cb);
  23. return;
  24. }
  25.  
  26. lazyCb = cb;
  27. },
  28.  
  29. cancel: () => {
  30. if (!settled) {
  31. canceled = true;
  32. }
  33. },
  34. };
  35. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement