RxJS: Back pressure
Что такое back pressure?
Back pressure — ситуация, когда Observable выдаёт данные быстрее, чем потребитель успевает их обрабатывать. Накапливаются необработанные данные, нагрузка на систему растёт. Стратегия back pressure — механизм, позволяющий системе справляться с нагрузкой, а не «падать».
Подходы делятся на:
- Lossy (с потерями) — потребителю не нужны все данные.
- Lossless (без потерь) — потеря данных может привести к ошибкам.
Как RxJS справляется
| Оператор | Тип | Поведение |
|---|---|---|
debounce | lossy | Эмитит значение, только если в течение заданного времени не было нового. |
throttle | lossy | Пропускает значения в течение интервала (часть данных теряется). |
bufferCount | lossless | Буферизует значения до заданного количества, затем эмитит пачкой. |
bufferTime | lossless | Буферизует значения за интервал времени, затем эмитит пачкой. |