Выбор ответа Senior Офлайн и хранение обновлено
Офлайн: создание и изменение одной записи
Вопрос
Без сети пользователь создал задачу и сразу её отредактировал. Сервер выдаёт id при создании. Как корректно синхронизировать?
Попробуйте сами
Выберите вариант, и откроется разбор.
Показать ответ и разбор
Коротко
Правильный ответ: Временный id на клиенте, отправка по порядку, замена id после ответа на создание. Редактирование зависит от создания: без серверного id его не к чему применить.
Варианты ответа
- Отправить редактирование первым: оно легче и быстрее дойдёт до сервера
- Отправить обе операции параллельно, сервер сам разберётся с порядком
- Временный id на клиенте, отправка по порядку, замена id после ответа на созданиеправильный ответ
- Запретить редактирование задачи, пока она не синхронизирована с сервером
Разбор
Редактирование зависит от создания: без серверного id его не к чему применить. Поэтому очередь строго последовательная, а временный id (или клиентский UUID, который сервер принимает как id) связывает операции. Параллельная отправка даст гонку, обратный порядок ошибку «не найдено», а запрет редактирования ухудшает опыт, когда это не нужно. Ещё проще, если сервер принимает id, сгенерированный клиентом.
Ответьте сами, а не прочитайте
В тренажёре вопрос попадёт в повторения и вернётся, когда начнёт забываться. Плюс билеты с зачётом: 20 вопросов, не больше 2 ошибок.