Ohm-Management - Projektarbeit B-ME
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

fetch.js 1.2KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. import { Observable } from '../../Observable';
  2. export function fromFetch(input, init) {
  3. return new Observable(subscriber => {
  4. const controller = new AbortController();
  5. const signal = controller.signal;
  6. let outerSignalHandler;
  7. let abortable = true;
  8. let unsubscribed = false;
  9. if (init) {
  10. if (init.signal) {
  11. outerSignalHandler = () => {
  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 };
  22. }
  23. fetch(input, init).then(response => {
  24. abortable = false;
  25. subscriber.next(response);
  26. subscriber.complete();
  27. }).catch(err => {
  28. abortable = false;
  29. if (!unsubscribed) {
  30. subscriber.error(err);
  31. }
  32. });
  33. return () => {
  34. unsubscribed = true;
  35. if (abortable) {
  36. controller.abort();
  37. }
  38. };
  39. });
  40. }
  41. //# sourceMappingURL=fetch.js.map