fetch.js 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. /** PURE_IMPORTS_START _.._Observable PURE_IMPORTS_END */
  2. import { Observable } from '../../Observable';
  3. export function fromFetch(input, init) {
  4. return new Observable(function (subscriber) {
  5. var controller = new AbortController();
  6. var signal = controller.signal;
  7. var outerSignalHandler;
  8. var unsubscribed = false;
  9. if (init) {
  10. if (init.signal) {
  11. outerSignalHandler = function () {
  12. if (!signal.aborted) {
  13. controller.abort();
  14. }
  15. };
  16. init.signal.addEventListener('abort', outerSignalHandler);
  17. }
  18. init.signal = signal;
  19. }
  20. else {
  21. init = { signal: signal };
  22. }
  23. fetch(input, init).then(function (response) {
  24. subscriber.next(response);
  25. subscriber.complete();
  26. }).catch(function (err) {
  27. if (!unsubscribed) {
  28. subscriber.error(err);
  29. }
  30. });
  31. return function () {
  32. unsubscribed = true;
  33. controller.abort();
  34. };
  35. });
  36. }
  37. //# sourceMappingURL=fetch.js.map