Логотип YeaHub

База вопросов

Собеседования

Тренажёр

База ресурсов

Обучение

Навыки

Задачи

Войти

Выбери, каким будет IT завтра — вместе c нами!

YeaHub — это полностью открытый проект, призванный объединить и улучшить IT-сферу. Наш исходный код доступен для просмотра на GitHub. Дизайн проекта также открыт для ознакомления в Figma.

© 2026 YeaHub

AI info

Карта сайта

Документы

Медиа

Назад
Вопрос про JavaScript: decorator, closure, higher-order function, call limit

Как реализовать декоратор функции, ограничивающий максимальное число её вызовов?

Проверяет понимание замыканий и декораторов в JavaScript для управления состоянием функции.

Короткий ответ

Декоратор — это функция, которая принимает другую функцию и возвращает её обёртку с дополнительной логикой. Для ограничения числа вызовов используется замыкание, хранящее счётчик. При каждом вызове счётчик увеличивается, и после достижения лимита функция перестаёт выполняться.

Длинный ответ

Что такое декоратор с ограничением вызовов?

Декоратор — это функция высшего порядка, которая принимает исходную функцию и возвращает новую, расширяющую её поведение. В данном случае мы хотим ограничить количество вызовов, чтобы функция выполнялась только заданное число раз, а затем игнорировала последующие вызовы или возвращала ошибку.

Как это работает?

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

Пример реализации

function limitCalls(fn, maxCalls) {
  let calls = 0;
  return function(...args) {
    if (calls >= maxCalls) {
      console.log('Лимит вызовов исчерпан');
      return;
    }
    calls++;
    return fn.apply(this, args);
  };
}

const sayHello = () => console.log('Hello!');
const limitedHello = limitCalls(sayHello, 2);
limitedHello(); // Hello!
limitedHello(); // Hello!
limitedHello(); // Лимит вызовов исчерпан

Где применяется?

  • Ограничение частоты вызовов API (rate limiting).
  • Защита от повторного выполнения одноразовых действий (например, инициализация).
  • Тестирование и отладка для проверки поведения при лимите.

Вывод: Декоратор с ограничением вызовов полезен для контроля выполнения функций в сценариях, где важно избежать избыточных или повторных операций, например, при работе с внешними сервисами или ресурсоёмкими вычислениями.

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию

Уровень

  • Рейтинг:

    4

  • Сложность:

    5

Навыки

  • JavaScript

    JavaScript

Ключевые слова

#decorator

#closure

#higher-order function

#call limit

Подпишись на React Developer в телеграм

Frontend developer

tech
tech
tech
tech
tech
tech
tech
tech
tech

Ментор по Frontend

Полное сопровождение до оффера — без дорогих курсов, с оплатой после трудоустройства

Записаться на консультацию