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

Opóźnienie wysłania danych

Aruba Cloud - Virtual Private Server VPS
0 głosów
599 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ź 240 wizyt
pytanie zadane 14 grudnia 2020 w Sprzęt komputerowy przez Guarix76 Nowicjusz (120 p.)
0 głosów
1 odpowiedź 305 wizyt
0 głosów
1 odpowiedź 6,013 wizyt

93,324 zapytań

142,323 odpowiedzi

322,390 komentarzy

62,653 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

Wprowadzenie do ITsec, tom 1 Wprowadzenie do ITsec, tom 2

Można już zamawiać dwa tomy książek o ITsec pt. "Wprowadzenie do bezpieczeństwa IT" - mamy dla Was kod: pasja (użyjcie go w koszyku), dzięki któremu uzyskamy aż 15% zniżki! Dziękujemy ekipie Sekuraka za fajny rabat dla naszej Społeczności!

...