Вступить в клуб →
сложнаяjavascriptДанные и сеть: REST, TanStack Query, WebSocket

Применение событий WebSocket к загруженному снимку без потерь и дублей

Клиент загружает снимок списка заказов по HTTP, а обновления получает по WebSocket. События могли прийти, пока грузился снимок, прийти не по порядку или повториться.

Напишите функцию applyUpdates(snapshot, events).

  • snapshot — { version, items }, где items — объект заказов по id.
  • events — массив событий в произвольном порядке: { version, type: 'upsert', item } или { version, type: 'delete', id }. У каждого изменения на сервере уникальная возрастающая версия.
  • Применяйте события по возрастанию версии; событие с версией не больше уже применённой пропускайте — оно уже учтено в снимке или пришло повторно.
  • upsert кладёт item по его item.id, delete удаляет заказ по id.
  • Верните новый снимок { version, items }, где version — последняя применённая версия. Входные данные не меняйте.

заготовка решения

function applyUpdates(snapshot, events) {
  // ваш код
  return undefined;
}

🔒 Проверка ответа — для участников клуба

  • Автотесты прямо в браузере
  • Подсказка, если застряли
  • Разбор с объяснением, почему так
  • Прогресс по всем задачам и виртуальные собеседования
Зарегистрироваться →

Регистрация занимает минуту

Другие задачи раздела