JavaScript · Senior · Pytanie 25 z 75
Dlaczego w implementacji debounce ważne jest zachowanie this i argumentów?
function debounce(fn, ms) {
let t;
return function (...args) {
clearTimeout(t);
t = setTimeout(() => fn.apply(this, args), ms);
};
}- ✓Poprawna odpowiedź: Inaczej opakowana metoda straci kontekst obiektu i parametry wywołania
- 2Inaczej poprzedniego timera nie da się wyczyścić przez
clearTimeout - 3Inaczej funkcja wykona się synchronicznie, bez opóźnienia
ms
Wyjaśnienie
Opakowanie musi być przezroczyste: wywołanie obj.save(data) przez debounce musi dotrzeć do fn z tym samym this i argumentami. Dlatego zwracana jest zwykła funkcja (ma własne this), a wewnątrz timera strzałka je zachowuje.