openpromise.js~ 705 B

123456789101112131415161718192021222324252627
  1. export function getOpenPromise () {
  2. const wrapper = {
  3. isResolved: false,
  4. isPending: true,
  5. isRejected: false
  6. };
  7. const promise = new Promise((resolve, reject) => {
  8. wrapper.resolve = resolve;
  9. wrapper.reject = reject;
  10. })
  11. Object.assign(promise, wrapper);
  12. promise.then(
  13. function (v) {
  14. promise.isResolved = true;
  15. promise.isPending = false;
  16. promise.isRejected = false;
  17. return v;
  18. },
  19. function (e) {
  20. promise.isResolved = false;
  21. promise.isPending = false;
  22. promise.isRejected = true;
  23. throw (e);
  24. }
  25. );
  26. return promise;
  27. }