什么是背压
Back pressure
翻译成中文叫做背压
,也有叫回压
的,那么到底啥是背压呢?望文思义一下,背压就是来自背后的压力,那么背后是指哪里呢?在RxJS中,背后就是指产生数据的Observable,我们姑且称之为生产者,而订阅这个Observable的Observer就是消费者。背压就是生产者生产数据的速度大于消费者消费的速度,导致大量的数据积压。
现实生活中的例子,你老婆一分钟能烙五个饼,而你每分钟只能吃一个,那么烙好的饼就会越积越多,你就吃不消了。
解决背压
解决背压基本就两种方法:缓冲和丢弃,我们在时髦一下,在泛化一下,就是无损处理和有损处理。
- Lossy Operation
- Lossless Operation
有损方式
- debounce
- throttle
无损方式
- bufferCount - 按数量缓冲,攒够Count个数据再发出
- bufferTime - 按时间缓冲,攒够Time时间内的数据再发出
- buffer - 按条件缓冲,满足条件时发出缓冲的数据, buffer(xxx), xxx是一个Observable,当xxx发出数据时,发出缓冲的数据。