promise.js 570 B

12345678910111213141516171819202122232425262728
  1. 'use strict'
  2. /**
  3. * @template {*} T
  4. * @typedef {Object} DeferredPromise
  5. * @property {Promise<T>} promise
  6. * @property {(value?: T) => void} resolve
  7. * @property {(reason?: any) => void} reject
  8. */
  9. /**
  10. * @template {*} T
  11. * @returns {DeferredPromise<T>} An object containing a promise and its resolve/reject methods.
  12. */
  13. function createDeferredPromise () {
  14. let res
  15. let rej
  16. const promise = new Promise((resolve, reject) => {
  17. res = resolve
  18. rej = reject
  19. })
  20. return { promise, resolve: res, reject: rej }
  21. }
  22. module.exports = {
  23. createDeferredPromise
  24. }