0%

RxJS-backpressure

什么是背压

Back pressure 翻译成中文叫做背压,也有叫回压的,那么到底啥是背压呢?望文思义一下,背压就是来自背后的压力,那么背后是指哪里呢?在RxJS中,背后就是指产生数据的Observable,我们姑且称之为生产者,而订阅这个Observable的Observer就是消费者。背压就是生产者生产数据的速度大于消费者消费的速度,导致大量的数据积压。

现实生活中的例子,你老婆一分钟能烙五个饼,而你每分钟只能吃一个,那么烙好的饼就会越积越多,你就吃不消了。

解决背压

解决背压基本就两种方法:缓冲和丢弃,我们在时髦一下,在泛化一下,就是无损处理和有损处理。

  • Lossy Operation
  • Lossless Operation

有损方式

  • debounce
  • throttle

无损方式

  • bufferCount - 按数量缓冲,攒够Count个数据再发出
  • bufferTime - 按时间缓冲,攒够Time时间内的数据再发出
  • buffer - 按条件缓冲,满足条件时发出缓冲的数据, buffer(xxx), xxx是一个Observable,当xxx发出数据时,发出缓冲的数据。