RxJava2 - range() vs interval()



我试图使用Observable.range(1,1000).publish()Observable.interval(500, TimeUnit.MILLISECONDS).publish()来理解Hot ObservableHot Flowable

  1. 当我使用 range() 而不是 interval() 来创建可观察/可流动时,无需暂停线程即可实现主线程等待一段时间。 在范围完成之前,Main()不会退出。interval()功能不会发生同样的情况。
  2. 此外,当我使用 range() 而不是 interval() 来创建可观察/可流动时,我必须先订阅观察者/订阅者,然后再connect()否则不会收到任何项目。使用interval()一切都按我预期工作。

有人可以解释为什么会发生这种情况吗?是range()的实施还是我不明白什么?

您可以在此处查看可观察/

观察者的示例,并在此处查看可流动/订阅者的示例。

range()运算符很冷,会尽快发出所有项目。如果没有施加背压,所有项目都将在最初的几微秒内发射。

interval()运算符是冷的,随着时间的推移逐个发出其项目;第一个项目在定义的间隔之后发出。如果您在主线程中订阅,并且您的主程序退出,您将看不到 interval() 运算符的任何结果,因为没有足够的时间过去。这意味着您要么必须在观察者链上阻塞,要么提供等待所需结果的外部方法。

最新更新