Repositorio del curso CCOM4030 el semestre B91 del proyecto Artesanías con el Instituto de Cultura

onErrorResumeNext.js 2.1KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. import { from } from '../observable/from';
  2. import { isArray } from '../util/isArray';
  3. import { SimpleOuterSubscriber, SimpleInnerSubscriber, innerSubscribe } from '../innerSubscribe';
  4. export function onErrorResumeNext(...nextSources) {
  5. if (nextSources.length === 1 && isArray(nextSources[0])) {
  6. nextSources = nextSources[0];
  7. }
  8. return (source) => source.lift(new OnErrorResumeNextOperator(nextSources));
  9. }
  10. export function onErrorResumeNextStatic(...nextSources) {
  11. let source = undefined;
  12. if (nextSources.length === 1 && isArray(nextSources[0])) {
  13. nextSources = nextSources[0];
  14. }
  15. source = nextSources.shift();
  16. return from(source).lift(new OnErrorResumeNextOperator(nextSources));
  17. }
  18. class OnErrorResumeNextOperator {
  19. constructor(nextSources) {
  20. this.nextSources = nextSources;
  21. }
  22. call(subscriber, source) {
  23. return source.subscribe(new OnErrorResumeNextSubscriber(subscriber, this.nextSources));
  24. }
  25. }
  26. class OnErrorResumeNextSubscriber extends SimpleOuterSubscriber {
  27. constructor(destination, nextSources) {
  28. super(destination);
  29. this.destination = destination;
  30. this.nextSources = nextSources;
  31. }
  32. notifyError() {
  33. this.subscribeToNextSource();
  34. }
  35. notifyComplete() {
  36. this.subscribeToNextSource();
  37. }
  38. _error(err) {
  39. this.subscribeToNextSource();
  40. this.unsubscribe();
  41. }
  42. _complete() {
  43. this.subscribeToNextSource();
  44. this.unsubscribe();
  45. }
  46. subscribeToNextSource() {
  47. const next = this.nextSources.shift();
  48. if (!!next) {
  49. const innerSubscriber = new SimpleInnerSubscriber(this);
  50. const destination = this.destination;
  51. destination.add(innerSubscriber);
  52. const innerSubscription = innerSubscribe(next, innerSubscriber);
  53. if (innerSubscription !== innerSubscriber) {
  54. destination.add(innerSubscription);
  55. }
  56. }
  57. else {
  58. this.destination.complete();
  59. }
  60. }
  61. }
  62. //# sourceMappingURL=onErrorResumeNext.js.map