Встречается на собеседованиях • сегодня

Как сделать чтобы запрос не строился столько же раз сколько нажата кнопка получения отчета

Используй debounce или throttle для ограничения частоты вызовов функции. Debounce откладывает выполнение до паузы между нажатиями, throttle ограничивает частоту вызовов.

Пример с debounce:

javascript
function debounce(func, delay) {
  let timeout;
  return function() {
    clearTimeout(timeout);
    timeout = setTimeout(() => func.apply(this, arguments), delay);
  };
}

const fetchReport = debounce(() => {
// запрос к API
}, 300);

button.addEventListener('click', fetchReport);

text

Пример с throttle:
```javascript
function throttle(func, limit) {
  let inThrottle;
  return function() {
    if (!inThrottle) {
      func.apply(this, arguments);
      inThrottle = true;
      setTimeout(() => inThrottle = false, limit);
    }
  };
}

const throttledFetch = throttle(fetchReport, 1000);

Также можно отключать кнопку на время запроса:

javascript
button.disabled = true;
fetch().finally(() => button.disabled = false);
Sophi
Софи собрала все вопросы. Тренируйся и получай
офферы быстрее!
Попробовать бесплатноArrow

Следующий вопрос

Это единственный вопрос по вашему фильтру

как отвечать на вопрос
пример собеседования
фреймворки на собеседовании
типичные вопросы junior
интервью вопросы и ответы