Kotlin RxJava2-range()与interval()的比较
我试图使用Kotlin RxJava2-range()与interval()的比较,kotlin,rx-java2,Kotlin,Rx Java2,我试图使用Observable.range(11000.publish()和Observable.interval(500,时间单位.毫秒).publish()来理解热可观测和热可流动 当我使用range()而不是interval()来创建一个可观察/可流动的线程时,不需要暂停线程来实现主线程等待一段时间主()。对于interval()函数,情况并非如此 此外,当我使用range()而不是interval()来创建可观察/可流动时,我必须在connect()之前先订阅观察者/订阅者,否则不会收到
Observable.range(11000.publish()
和Observable.interval(500,时间单位.毫秒).publish()来理解热可观测
和热可流动
当我使用range()
而不是interval()
来创建一个可观察/可流动的线程时,不需要暂停线程来实现主线程等待一段时间<代码>主()。对于interval()
函数,情况并非如此
此外,当我使用range()
而不是interval()
来创建可观察/可流动时,我必须在connect()
之前先订阅观察者/订阅者,否则不会收到任何项目。使用interval()
有人能解释为什么会这样吗?是因为实现了range()
,还是因为我不明白什么
您可以看到Observable/Observer和Flowable/Subscriber的示例。操作符是冷的,range()
操作符会尽快释放其所有项。如果没有施加背压,所有项目将在最初几微秒内排放
interval();第一项在定义的间隔后发出。如果您在主线程中订阅,并且您的主程序退出,您将不会看到来自interval()
操作符的任何结果,因为还没有经过足够的时间。这意味着您必须在观察者链上阻塞,或者提供一种外部方法来等待您想要的结果。在range
和interval
之间存在巨大差异,这就是为什么您会得到如此大的差异results@OmarMainegra我可以理解,但我想解释一下。这个评论对我一点帮助都没有。对于Flowable
和range()
来说,默认情况下不应该有背压感知?我认为,默认情况下,Flowable
具有背压感知功能,应该在125个排放项目周围等待。如果它等待第一个订阅者
赶上可流动的订阅者,为什么第二个订阅者
什么也没有收到?首先,订户
需要很长时间才能赶上发出的项目。可流动
操作员意识到背压。然而,如果你不施加背压,它们会一直释放,直到你施加背压为止Subscriber
将在几微秒内处理每次发射的结果,除非您正在进行其他重要处理。在任何情况下,interval()
运算符在0.5秒内都不会发出其第一个值