fetch problem

KA
  • Rejestracja:około 6 lat
  • Ostatnio:prawie 5 lat
  • Postów:4
0

Witam Wszystkich i zapraszam do krytyki mojego kodu oraz pomocy :)

https://codepen.io/Kayox/pen/bGbqXVq?editors=1111

Starałem się zrobić kalkulator walut i na mojej przeglądarce już "działa" pojawia się tylko problem że wysokości kursów za pierwszym kliknięciem się pobierają i dopiero za drugim kliknięciem wykonywane są działania. I tutaj rodzi się moje pytanie jak poprawić ten kod żeby przy 1 kliknięciu kod wykonał się dopiero jak pobierze dane z API.

Wrzuciłem kod na codepen ale... okazuję się że w codepenie zwraca mi wysokość kursów jako "undefined".

KA
Problem teoretycznie rozwiązałem, dodałem opóźnienie poprzez setInterval. Czy macie jakieś inne rozwiązania niż opóźnianie funkcji np poprzez setInterval? i czemu codepen pokazuję co innego?
Haskell
  • Rejestracja:prawie 10 lat
  • Ostatnio:12 miesięcy
  • Postów:4700
2

W Codepen jest błąd "Mixed Content", tutaj masz wyjaśnienie: https://developers.google.com/web/fundamentals/security/prevent-mixed-content/what-is-mixed-content

Generalnie wystarczy, że zmienisz http na https.

Natomiast jeżeli chodzi o problem z pierwszym pobieraniem to jest on spowodowany tym, że mieszasz kod synchroniczny z asynchronicznym. Mówiąc krótko masz straszny syf w kodzie. Nie ucz się więcej JS z kursów Zelenta i innych bieda kołczów. Są dobre książki za darmo, albo za niewielkie pieniądze.

Za darmo są po angielsku takie książki i obie bardzo, bardzo dobre:
https://github.com/getify/You-Dont-Know-JS
https://eloquentjavascript.net/


Zaglądali do kufrów, zaglądali do waliz, nie zajrzeli do d**y - tam miałem socjalizm. Czesław Miłosz
edytowany 1x, ostatnio: Haskell
KA
Z Zelenta nie korzystam było to raczej robione metodą prób i błędów, dzięki za odpowiedź zapoznam się z materiałami :)
Haskell
Mogę na szybko podpowiedzieć, że cały kod liczący i wyświetlający wynik powinien być asynchroniczny (jeżeli już pobieranie masz asynchroniczne). Pobieranie kursów trwa kilka sekund i dzieje się asynchronicznie, a kod synchroniczny liczący i wyświetlający nie czeka na wynik, tylko od razu próbuje policzyć ale nie mając kursów. Zatem cały kod zrób asynchroniczny i wtedy wynik będzie się pojawiał po tym jak pobiorą się kursy. Czyli jak klikniesz przycisk to będziesz widział, że przez moment nic się nie dzieje, a po chwili pojawi się wynik.
KA
Ok, skończę pracę i zobaczymy co uda mi się osiągnąć.

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.