BACK
Use casesToast queue — уведомления по одному
Use cases · 48

Toast queue — уведомления по одному

Паттерн

Сервер вернул 5 ошибок одновременно. Не показывать же 5 overlapping toast стопкой! Показываем по одному: первый три секунды, потом второй, потом третий. Очередь.

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

Императивная очередь — массив + setInterval + флаг «сейчас показывается». Легко получить «застрявший» флаг после destroy и пропавшие сообщения.

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

  • concatMap — подписывается на следующий toast только после complete предыдущего. Это и есть очередь.
  • delay внутри inner stream — симулирует время показа toast (3 секунды).
  • map — формирует display event для контейнера.

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

  • mergeMap — все toast покажутся параллельно. Стопка ошибок.
  • switchMap — новый toast заменит предыдущий. Сообщения теряются.
  • exhaustMap — новые уведомления игнорируются во время показа текущего. Тоже теряются.

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

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

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