【问题标题】:RxJava2 - how to emit hashMap value periodicallyRxJava2 - 如何定期发出 hashMap 值
【发布时间】:2019-12-19 09:02:29
【问题描述】:

我在 SO 上搜索了很多,不认为它是重复的。我的问题很简单,但不知何故我的解决方案不起作用。

问题:我有一个 hashMap,我想每 10 秒后一个一个地发出值。

这就是我现在拥有的,显然不会产生正确的价值。

Observable.fromIterable(factMap.entries)
        .delay(10, TimeUnit.SECONDS)
        .subscribe { Timber.i("Abhishek $it") }

我也尝试了interval,但我不确定如何跟踪已发出的值。如您所见,我在 RxJava 方面没有经验,任何帮助将不胜感激。

【问题讨论】:

    标签: rx-java2 rx-android


    【解决方案1】:

    您可以将.zip 运算符之一与带有间隔的可观察对象一起使用。例如,

    // RxJava2
    Observable.fromIterable(factMap.entries)
            .zipWith(Observable.interval(10, TimeUnit.SECONDS), BiFunction<...> { t1, t2 -> t1 })
            .subscribe { Timber.i("Abhishek $it") }
    

    【讨论】:

    • Observable.fromIterable(factMap.entries) .zipWith(Observable.interval(10, TimeUnit.SECONDS), BiFunction&lt;String, String, String&gt; { t1, t2 -&gt; t1 }) 这个不编译,估计没有这样的方法。
    • @Abhishek Sharma,警告说什么?您正在传递一个 hashmap 条目和间隔,因此括号应该类似于 BiFunction&lt;MutableMap.MutableEntry&lt;String, String&gt;, Long, MutableMap.MutableEntry&lt;String, String&gt;&gt; 而不是 BiFunction&lt;String, String, String&gt;。还要确保您使用的是io.reactivex.functions.BiFunction
    • 你是对的。我在那里犯了一个错误。工作正常。接受你的回答。感谢您的帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-02-06
    • 2013-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多