Funkcja działająca w pętli

0

Cześć,
Na wstępie dodam że dopiero uczę się programować. Potrzebuję zmodyfikować funkcję działającą w pętli tak aby nie wysyłała powtarzających się wiadomości.

setInterval(function(key)
{ 
var data = key;
websocketdata.send(data);
}, 100);

key przyjmuje wartości "W", "S", "E", "N". Jeśli na przykład key = "W" wysyła cały czas "W" co 100ms. Chcę aby wysłało się tylko raz a kolejny gdy wartość zmieni się na inną. Z góry dziękuję za pomoc.

1

Może użyj setTimeout() zamiast setInterval()
https://developer.mozilla.org/en-US/docs/Web/API/setTimeout

0

Obecna funkcja nawet nie działa jak trzeba, bo skąd niby się bierze to key?

Najważniejsza sprawa jest taka, że raczej będzie to znikomy narzut i IMO nie powinieneś się tym przejmować - ba, nawet lepiej, że wiesz, że gracz nadal jest podpięty do gry (chyba, że masz do tego coś osobnego) - bardzo złą rzeczą jest przedwczesna optymalizacja - jeszcze nie wiesz jak coś wpływa na system, a już chcesz to zrobić lepiej. Obecnie nie masz nawet działającego kodu, a już chcesz, żeby był szybszy - aż się przypomina obrazek: https://theprofoundprogrammer.com/post/28974600028/text-it-doesnt-work-but-its-fast

A rozwiązanie jest proste, generalnie zahacza o banalne, na poziomie pierwszych dni nauki języka. Trochę mi to nie pasuje do websocketów - websockety to nie jest temat na pierwsze dni nauki. Upewnij się więc, że nie gonisz zbyt szybko, nie próbujesz zbyt szybko zbudować czegoś, co działa, nie mając świadomości o pewnych podstawach technologii, których używasz.

A rozwiązanie to coś w stylu:

let lastKey;
function (key) {
  if (lastKey !== key) {
    websocketdata.send(key);
    lastKey = key;
  }
}

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