Выбор ответа Senior Офлайн и хранение обновлено

Офлайн: создание и изменение одной записи

Вопрос

Без сети пользователь создал задачу и сразу её отредактировал. Сервер выдаёт id при создании. Как корректно синхронизировать?

Попробуйте сами

Выберите вариант, и откроется разбор.

Показать ответ и разбор

Коротко

Правильный ответ: Временный id на клиенте, отправка по порядку, замена id после ответа на создание. Редактирование зависит от создания: без серверного id его не к чему применить.

Варианты ответа

  1. Отправить редактирование первым: оно легче и быстрее дойдёт до сервера
  2. Отправить обе операции параллельно, сервер сам разберётся с порядком
  3. Временный id на клиенте, отправка по порядку, замена id после ответа на созданиеправильный ответ
  4. Запретить редактирование задачи, пока она не синхронизирована с сервером

Разбор

Редактирование зависит от создания: без серверного id его не к чему применить. Поэтому очередь строго последовательная, а временный id (или клиентский UUID, который сервер принимает как id) связывает операции. Параллельная отправка даст гонку, обратный порядок ошибку «не найдено», а запрет редактирования ухудшает опыт, когда это не нужно. Ещё проще, если сервер принимает id, сгенерированный клиентом.

Ответьте сами, а не прочитайте

В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.