Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Исправляет функцию debounce() #5493

Open
wants to merge 4 commits into
base: main
Choose a base branch
from

Conversation

loonlylokly
Copy link
Contributor

@loonlylokly loonlylokly commented Aug 18, 2024

Описание

Переписал функцию debounce() на более простой вариант без проверки времени и переделал описание работы.
Вот пример проблемы с которой столкнулся: https://jsbin.com/ceqetosabi/2/edit?js,console

Чек-лист

  • Текст оформлен согласно руководству по стилю
  • Ссылки на внутренние материалы начинаются со слеша и заканчиваются слэшем либо якорем на заголовок (/css/color/, /tools/json/, /tools/gulp/#kak-ponyat)
  • Ссылки на картинки, видео и демки относительные (images/example.png, demos/example/, ../demos/example/)

@loonlylokly loonlylokly changed the title Исправляет функцию debounce Исправляет функцию debounce() Aug 18, 2024
@github-actions github-actions bot added js Контент по JavaScript статья Расширенный материал labels Aug 18, 2024
js/debounce/index.md Outdated Show resolved Hide resolved
js/debounce/index.md Outdated Show resolved Hide resolved
@TatianaFokina TatianaFokina added the улучшение Доработка существующего label Aug 18, 2024
js/debounce/index.md Outdated Show resolved Hide resolved
js/debounce/index.md Outdated Show resolved Hide resolved
js/debounce/index.md Outdated Show resolved Hide resolved
@loonlylokly
Copy link
Contributor Author

@vitya-ne Что скажешь по тексту объяснения? Норм?

@vitya-ne
Copy link
Contributor

@vitya-ne Что скажешь по тексту объяснения? Норм?

чтобы callback функция передаваемая в setTimeout не потеряла контекст его нужно привязать с помощью apply. Это важно при работе с обработчиком событий браузера.

По смыслу все верно, но есть, как мне кажется, неточности )

  • не то что бы функция callback может потерять контекст, она его может не получить. по-моему это не совсем тоже самое.
  • используя .apply() мы не привязываем контекст (для этого есть .bind()), а устанавливаем его при вызове.
  • может стоит категоричное 'нужно' поменять на 'можно' ? .call() ведь тоже тут справится.
  • Это важно при работе с обработчиком событий браузера я бы заменил на Это важно если обработчик события обращается кthis`.

Copy link

Превью контента из 281a758 опубликовано.


Отметим несколько важных моментов:

- возвращаемая функция `perform` НЕ должна быть стрелочной, чтобы не терялся контекст;
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Давайте тут уточним:

  • возвращаемая функция perform НЕ должна быть стрелочной, чтобы не терялся контекст callback функции;

Отметим несколько важных моментов:

- возвращаемая функция `perform` НЕ должна быть стрелочной, чтобы не терялся контекст;
- чтобы `callback` функция, передаваемая в `setTimeout`, не потеряла контекст, его нужно привязать с помощью `apply`. Это важно при работе с обработчиком событий браузера.
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Давайте тут тоже уточним:

  • чтобы callback функция, передаваемая в setTimeout, получила контекст, укажем его с помощью apply. Это важно при использовании debounce для обработчиков событий браузера.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
js Контент по JavaScript статья Расширенный материал улучшение Доработка существующего
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants