BACK
Use casesSubmit queue — отправки строго по порядку
Use cases · 16

Submit queue — отправки строго по порядку

Паттерн

Не путать с защитой от двойного клика! Здесь каждый submit важен — это разные заявки, шаги мастера, отдельные команды админки. Все они должны уйти на сервер, причём в том же порядке, в котором их отправил пользователь.

Какую проблему решаем

Если использовать exhaustMap (защита от двойной отправки) — мы потеряем важные команды. Если switchMap — отменим предыдущую отправку, что катастрофично для mutate-запросов. Если mergeMap — отправим параллельно, и backend получит их в случайном порядке.

Операторы и зачем они нужны

  • concatMap — подписывается на следующий запрос только после complete предыдущего. Это и есть очередь.
  • timer + map — имитируют сетевой запрос для демонстрации.

Подводные камни

  • exhaustMap подходит для кнопки «Заплатить» (защита от дублей), но потеряет важные submit-события в очереди.
  • switchMap отменит предыдущую отправку — нельзя использовать для mutate-запросов, которые уже могли частично сохраниться.
  • Если внутри concatMap прилетит error — вся очередь умрёт. В production добавляйте catchError на уровне каждого item.

Что в итоге получаем

Все submit-команды доходят до сервера один за другим, в точном порядке появления. Ничего не теряется и не путается.

script.ts // TypeScript
CONSOLE · Console Output
Нажмите на запуск, чтобы увидеть результат...