Расскажите, что происходит со старыми запросами при смене пользователя и как `AbortController` предотвращает race condition (гонку запросов).

Проблема race condition при переключении пользователей возникает, когда несколько запросов отправляются подряд, и результат последнего может быть непредсказуемым. Для решения можно использовать несколько подходов:

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

Что ответить на собеседовании

Проблема race condition при переключении пользователей возникает, когда несколько запросов отправляются подряд, и результат последнего может быть непредсказуемым. Для решения можно использовать несколько подходов:

Подробный разбор

Ответ с пояснениями

Проблема race condition при переключении пользователей возникает, когда несколько запросов отправляются подряд, и результат последнего может быть непредсказуемым. Для решения можно использовать несколько подходов:

  • AbortController — позволяет отменить предыдущие запросы, если отправлен новый. Это предотвращает обработку устаревших ответов.
const controller = new AbortController();

function fetchData() {
  controller.abort(); // отменяем предыдущий запрос
  controller = new AbortController();
  fetch('/api/data', { signal: controller.signal })
    .then(response => response.json())
    .then(data => console.log(data))
    .catch(err => {
      if (err.name === 'AbortError') {
        console.log('Запрос отменён');
      }
    });
}
  • Debounce — задержка выполнения функции до тех пор, пока не прекратятся быстрые повторные вызовы. Это уменьшает количество запросов.
  • Блокировка кнопок через состояние loading — предотвращает повторные нажатия, пока предыдущий запрос не завершится.

Часто комбинируют эти методы для надежного контроля запросов и улучшения UX.

Практика в реальном времени

Подготовьтесь к следующему собеседованию

Interview Boost учитывает вакансию, резюме и технологии и помогает сформулировать ответ прямо во время интервью.

Начать подготовку