Funkcja debounce
ogranicza liczbę wywołań funkcji wielokrotnie w krótkim czasie, co jest przydatne np. przy częstych zdarzeniach jak scroll
czy resize
. Przyjmuje ona, jako argumenty funkcję func
, której wywołanie ma być kontrolowane, oraz delay
określający opóźnienie w milisekundach. Zwraca nową funkcję, która "czyści" poprzednie wywołanie (jeśli istnieje) i ustawia nowe wykonanie func
po upływie delay
. Dzięki .apply()
, oryginalny kontekst this
jest zachowany. W naszym przykładzie, loadImage
z obiektu obj
zostaje wywołane 250ms po ostatnim scrollu, zachowując kontekst. Dla zaawansowanych zastosowań można korzystać z bibliotek takich, jak lodash.