fetch problem

Odpowiedz Nowy wątek
2019-08-27 00:24
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".

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? - Kayox 2019-08-27 01:30

Pozostało 580 znaków

2019-08-27 08:36
2

W Codepen jest błąd "Mixed Content", tutaj masz wyjaśnienie: https://developers.google.com[...]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/


Wiedza to potęga
edytowany 1x, ostatnio: Haskell, 2019-08-27 08:42
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 :) - Kayox 2019-08-27 09:43
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. - Haskell 2019-08-27 09:56
Ok, skończę pracę i zobaczymy co uda mi się osiągnąć. - Kayox 2019-08-27 09:59

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0