Запись на один слот: гонка двух заявок и повтор ответа
Три одновременно начатых запроса дают одну бронь, один конфликт и тот же ответ на повтор.
Задача
Слот 18:00 запрашивают Анна и Борис. Одновременно повторяется запрос Анны, а после сохранения имитируется потеря ответа. Без ключа запроса повтор выглядит новой записью.
Три запроса на слот 18
Одновременные обращения к слоту 18 запускаются через Promise, а не последовательно на бумаге. Один запрос фиксирует запись, другой получает конфликт, повтор возвращается к прежнему результату. Эта проверка полезна именно конкуренцией: при последовательном запуске слабое место между чтением и записью могло бы остаться незаметным.
Что сделано
Я исполнил три конкурентных запроса к одному слоту и сохранил исходы записи, конфликта и повтора.
Реально выполненный асинхронный прогон трех запросов сохранил одну бронь. Борис получил конфликт, повтор A1 — первоначальное подтверждение. Последующий повтор после потери ответа не создал новую запись.
- index.html
- source.json
- source.csv
- result.json
- result.csv
- engine.js
- checks.json
- style.css
- concurrency-result.json
Открыть работающий материал · Контрольные примеры CSV · Повторить проверку · Модель и исходные условия