fetch.js 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. "use strict";
  2. Object.defineProperty(exports, "__esModule", { value: true });
  3. var Observable_1 = require("../../Observable");
  4. function fromFetch(input, init) {
  5. return new Observable_1.Observable(function (subscriber) {
  6. var controller = new AbortController();
  7. var signal = controller.signal;
  8. var outerSignalHandler;
  9. var unsubscribed = false;
  10. if (init) {
  11. if (init.signal) {
  12. outerSignalHandler = function () {
  13. if (!signal.aborted) {
  14. controller.abort();
  15. }
  16. };
  17. init.signal.addEventListener('abort', outerSignalHandler);
  18. }
  19. init.signal = signal;
  20. }
  21. else {
  22. init = { signal: signal };
  23. }
  24. fetch(input, init).then(function (response) {
  25. subscriber.next(response);
  26. subscriber.complete();
  27. }).catch(function (err) {
  28. if (!unsubscribed) {
  29. subscriber.error(err);
  30. }
  31. });
  32. return function () {
  33. unsubscribed = true;
  34. controller.abort();
  35. };
  36. });
  37. }
  38. exports.fromFetch = fromFetch;
  39. //# sourceMappingURL=fetch.js.map