【问题标题】:RxJava2 timer and combineLatestRxJava2 定时器和 combineLatest
【发布时间】:2017-03-31 12:47:43
【问题描述】:

对 RxJava2 来说有点新意 我在使用 timercombineLatest 时遇到问题,例如:

Observable.combineLatest(
  Observable.timer(5, TimeUnit.SECONDS).map { TimedData(it) },
  locationDataSource.listen(),
  sensorDataSource.listen().
  Function3 { timedData, location, sensorEvent -> Combined(timedData, location, sensorEvent) }
).subscribeOn(Schedulers.io()).observeOn(AndroidSchedulers.mainThread()).subscribe {
  Log.d(TAG, "Timer -> " + it.timedData)
}

发生的事情是timedData 只更新一次,然后它再也不会触发,所有其他可观察对象都开始更新。 我找到了https://github.com/ReactiveX/RxJava/issues/1717,但它是从 2014 年开始的,所以我认为它已经解决了。

由于 BackPressure,这种情况还会发生吗?

【问题讨论】:

  • javadoc。它只触发一次,你需要interval
  • 该死,我想我确实把操作员弄糊涂了。你是对的!我到家时会试试看,但你可能应该写一个答案。

标签: android timer rx-java kotlin


【解决方案1】:

按设计工作。 Observable.timer 为单个延迟执行安排一些任务。 如果您希望定期执行某些操作,请尝试使用 interval 而不是 timer

Observable.interval(0,5, TimeUnit.SECONDS);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-06-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多