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