operators/toPromise.js

  1. import { Observable } from '../Observable';
  2. import { first } from './first';
  3. /**
  4. * Reverse of [`fromPromise`](#frompromise)
  5. * <br />
  6. * Converts an Observable to a promise, takes the first value and then completes
  7. *
  8. * @memberof operators
  9. *
  10. * @param {Observable} source$
  11. * @returns {Promise<*>}
  12. */
  13. export const toPromise = function (source$) {
  14. if (!global.Promise) {
  15. throw new Error('Promise does not exist in the current context');
  16. }
  17. return new Promise(function (respond, reject) {
  18. return first(source$).subscribe({
  19. next: respond,
  20. error: reject,
  21. complete: respond,
  22. });
  23. });
  24. };
  25. Observable.toPromise = toPromise;
  26. Observable.prototype.toPromise = function () {
  27. return toPromise(this);
  28. };