• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Opóźnienie wysłania danych

42 Warsaw Coding Academy
0 głosów
608 wizyt
pytanie zadane 16 sierpnia 2021 w JavaScript przez MarCiu Nowicjusz (160 p.)
Witam.

Mianowicie mam suwak z wyborem wartości. Powiedzmy 0-100 ze skokiem co jeden.
Skrypt wywołuje się przy zmianie wartości suwaka i wysyła dane do mikroprocesora który steruje na tej podstawie urządzeniem. Jest to mały mikroprocesorek i nie jest w stanie tak często odsłuchiwać nadchodzące dane jak ja na stronie bawię się suwakiem. Więc przydało by się pewne opóźnienie (daj my na to 100ms) i dopiero wysłać ostateczne dane.

Wcześniej program miałem na pisany w BASICU na telefon, jako aplikację. Tam podczas zmiany wartości na suwaku uruchamiałem timer, który po odliczeniu tych 100ms dopiero uruchamiał procedurę wysłania danych. Tworzenie danego timera mało tę cechę, że nadpisywało poprzedni i ten jak by zaczynał dopiero odliczać od początku. Co mało tę cechę, że dopiero ten ostatni był, aktywny gdy przestawało się ruszać suwakiem i dane były wysyłane z odpowiednim opóźnieniem.

Teraz aplikację staram się przenieść na stronę html. Nie wiem jak wykonać odpowiednie opóźnienie w Javascipt'cie.

Tu każde wywołanie pętli opóźniającej tworzy nowy zegar, który i tak działa w tle i swoją funkcję wykona i dane wyśle. Nowe wywołanie nie nadpisuje starego a tworzy nowy odliczający zegar.

Czy takie coś jest możliwe wykonanie w Javascipc'cie? I prosił bym o naprowadzenie jak to wykonać.

2 odpowiedzi

+3 głosów
odpowiedź 16 sierpnia 2021 przez edutomek Dyskutant (8,380 p.)

Jest możliwe: funkcje setTimeout i clearTimeout.

W oparciu o te funkcje w JS można to zrobić dokładnie tak samo, jak było w BASICu. No, może z jedną różnicą, bo tworzenie nowego timera nie kasuje poprzedniego. Trzeba więc będzie "ręcznie" usunąć poprzedni i ustawić nowy timer.
 

+2 głosów
odpowiedź 16 sierpnia 2021 przez pablop76 VIP (123,540 p.)
Myślę , że możesz wykorzystać technikę, która nazywa się throttle. Czyli wywoływanie funkcji zwrotnej określoną ilość razy w danym czasie.
komentarz 16 sierpnia 2021 przez MarCiu Nowicjusz (160 p.)
Bardzo dziękuję za pomoc. Lekarstwem okazał się mechanizm throttle.

Wielki ukłon Panowie i podziękowania :)

Podobne pytania

0 głosów
1 odpowiedź 248 wizyt
pytanie zadane 14 grudnia 2020 w Sprzęt komputerowy przez Guarix76 Nowicjusz (120 p.)
0 głosów
1 odpowiedź 307 wizyt
0 głosów
1 odpowiedź 6,072 wizyt

93,377 zapytań

142,379 odpowiedzi

322,528 komentarzy

62,726 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

VMware Cloud PRO - przenieś swoją infrastrukturę IT do chmury
...