---
metadata:
  - name: generator
    content: Diplodoc Platform v5.66.0
alternate:
  - https://yandex.ru/dev/games/doc/en/sdk/construct-3/throttle-debounce.md
  - https://yandex.ru/dev/games/doc/hi/sdk/construct-3/throttle-debounce.md
  - https://yandex.ru/dev/games/doc/ko/sdk/construct-3/throttle-debounce.md
  - https://yandex.ru/dev/games/doc/ru/sdk/construct-3/throttle-debounce.md
  - https://yandex.ru/dev/games/doc/tr/sdk/construct-3/throttle-debounce.md
  - https://yandex.ru/dev/games/doc/vi/sdk/construct-3/throttle-debounce.md
  - https://yandex.ru/dev/games/doc/zh/sdk/construct-3/throttle-debounce.md
  - href: https://yandex.ru/dev/games/doc/ru/sdk/construct-3/throttle-debounce.md
    type: text/markdown
    title: Markdown version
  - href: https://yandex.ru/dev/games/doc/ru/llms.txt?revision=r21993288
    rel: describedby
---
> **Documentation Index:** Fetch the complete configuration index at https://yandex.ru/dev/games/doc/ru/llms.txt?revision=r21993288

# Throttle и Debounce

<!-- source: ru/_includes/script-common.md -->
<!-- source: ru/_includes/script/index-js.md -->

<!-- endsource: ru/_includes/script/index-js.md -->

<!-- source: ru/_includes/script/requirements-js.md -->

<!-- endsource: ru/_includes/script/requirements-js.md -->

<!-- source: ru/_includes/script/image-modal-js.md -->

<!-- endsource: ru/_includes/script/image-modal-js.md -->
<!-- endsource: ru/_includes/script-common.md -->

Плагин предоставляет доступ к двум особым условиям: **Не чаще чем раз в \<X\> секунд** и **На отложенное событие**.

Если вы предпочитаете использовать JavaScript, то вы можете ознакомиться со статьями: [Debounce на примере формы поиска](https://doka.guide/js/debounce/){.external} и [Throttle на примере изменения страницы при прокрутке](https://doka.guide/js/throttle/){.external}.

## Throttle {#throttle}

Иногда какая-то часть игры может сильно влиять на производительность. Например, обработка физики или искусственного интеллекта.

Из-за сложности подобных вычислений лучше избегать их использования слишком часто. Для таких случаев обычно используют **Каждые \<X\> секунд**, чтобы запускать код раз в некоторое время, но это не всегда возможно.

Например, у нас есть какая-то сложная игровая механика, которая выполняется при нажатии на экран. В таких ситуациях, когда нужно ограничить частоту выполнения кода, но вы не можете использовать таймер, вы можете воспользоваться особым условием **Не чаще чем раз в \<X\> секунд**.

{% note warning %}

Не рекомендуется использовать **Не чаще чем раз в \<X\> секунд** каждый тик, это не повлечет за собой никаких последствий, но вместо этого лучше использовать **Каждые \<X\> секунд**.

![Скриншот Construct 3: две строки с 3 ячейками. 1 строка — иконка «ОК» и текст «Кнопка», «При нажатии», «Yan» | «Отложить событие setScore на 2 секунды». 2 строка — «YandexGames», «На отложенное событие "setScore"», «Yan» | «Отправить счет 5 в таблицу лидеров "score" с данными ""».](../../_images/construct-3/throttle-debounce/throttle-vs-timer.webp)

{% endnote %}

## Debounce {#debounce}

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

Например, если вы слишком часто обновляете счет в лидерборде, то вам стоит использовать особое условие **На отложенное событие** вместе с триггерным условием **Отложить выполнение**. Эта связка работает по аналогии с нативной связкой **Сигнал** → **При получении сигнала**, но откладывает вызов на определенное время с момента последней попытки выполнения.

Однако его можно спутать с предыдущим условием **Не чаще чем раз в \<X\> секунд**, ведь мы его тоже использовали, чтобы спрятать код, который не должен вызываться слишком часто.

Основное их различие в том, что **Не чаще чем раз в \<X\> секунд** ограничивает частоту вызова, а **На отложенное событие** откладывает вызов функции на определенное время. Это именно то, что нам нужно, ведь нам не обязательно выполнять функцию слишком часто, нужно лишь не превышать ограничение.

Визуализация разницы между **Не чаще чем раз в \<X\> секунд** и **На отложенное событие**:

@[youtube](https://www.youtube.com/embed/SkWiM3OXhQs?si=G6ppsidgt6SHYv-A)

---


<!-- source: ru/_includes/sdk/plugin-tg-support.md -->
{% note info %}

Если при работе с плагином вы столкнулись с проблемой или у вас появился вопрос, обратитесь в [сообщество в Телеграме](https://t.me/yagamedev/1056558){.telegram} или в [сообщество ВКонтакте](https://vk.ru/yandexgmsdev){.vk}.

{% endnote %}
<!-- endsource: ru/_includes/sdk/plugin-tg-support.md -->


<!-- source: ru/_includes/sdk/button-git.md -->
<a href="https://github.com/yandex-games-plugins/construct3">
  <span class="button">Репозиторий</span>
</a>
<!-- endsource: ru/_includes/sdk/button-git.md -->
