Skip to content

Conversation

@tenorok
Copy link

@tenorok tenorok commented May 6, 2020

В статье https://habr.com/ru/post/60957/ сказано про debounce:

  1. ...
  2. Реальный вызов происходит сразу, а все остальные попытки вызова игнорируются, пока не пройдет время, большее или равное задержке, отсчитанной от времени последней попытки.

Но сейчас реализация не соответствует этому описанию, потому что при использовании второго варианта происходит только первый мгновенный вызов, а последний после окончания задержки не выполняется.

@dfilatov
Copy link
Owner

dfilatov commented May 8, 2020

Да, там код не совсем корректен. Но твой вариант тоже неправильно работает: если просто один раз позвать "задебаунсенную" функцию с invokeAsap=true, то это приведет к двум вызовам исходной функции, а так не должно быть. По-хорошему там нужен еще один флаг, который будет отвечать за то, что исходная функция была позвана в "invokeAsap" варианте и проверять это в вызове по таймеру, чтобы не звать ее второй раз.

Ps. А зачем ты это используешь? Это какое-то древнее говно мамонта )

@tenorok tenorok force-pushed the debounce-invokeAsapFix branch from 20101ff to b06dc56 Compare May 9, 2020 14:16
@tenorok tenorok force-pushed the debounce-invokeAsapFix branch from b06dc56 to ebc5127 Compare May 9, 2020 14:18
@tenorok
Copy link
Author

tenorok commented May 9, 2020

На работе случилось недопонимание касаемо debounce и throttle, ну я пошёл открывать твою статью на хабре, за неё отдельное спасибо, кстати, очень понятная :-) Потом заглянул в исходники и понял, что работает оно не так и решил исправить, тем более задача интересная.

Исправил. Дополнительной переменной здесь не отделаться, как я понимаю, потому что надо её как-то сбрасывать не только после череды вызовов, но и между отдельными одиночными вызовами, а запускать ещё один таймер кажется нерационально, поэтому пришёл к тому, что надо проверять время вызова.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants