我是 rxjava2 的新手。当我阅读有关它的书时,我有一些我不理解的关于运算符延迟的内容。
We can postpone emissions using the delay() operator. It will hold any received emissions and delay each one for the specified time period. If we wanted to delay emissions by three seconds, we could do it like this:
public static void main(String[] args) {
Observable.just("Alpha", "Beta", "Gamma" ,"Delta",
"Epsilon")
.delay(3000, TimeUnit.SECONDS)
.subscribe(s -> System.out.println("Received: " + s));
sleep(3000);
}
public static void sleep(long millis) {
try {
Thread.sleep(millis);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
上述代码 fragment 的输出如下: 测试版 Α Gamma 三角洲 小量
我认为输出只是“Alpha”,因为他们说
Because delay() operates on a different scheduler (such as Observable.interval()), we need to leverage a sleep() method to keep the application alive long enough to see this happen. Each emission will be delayed by three seconds
延迟 3 秒,我认为有一个发射为“Alpha”,但它发射了可观察到的所有发射。
最佳答案
这就是你想要的吗?
val source1 = Observable.just("Alpha", "Beta", "Gamma", "Delta", "Epsilon")
val source2 = Observable.interval(3000, TimeUnit.MILLISECONDS)
val observable = Observable.zip(source1, source2, object : BiFunction<String, Long, Any> {
override fun apply(t1: String, t2: Long): Any {
Log.d("Sometag", "Received $t1")
return "Something"
}
}).subscribe()
输出
2019-02-21 13:40:15.502 D/Sometag: Received Alpha
2019-02-21 13:40:18.502 D/Sometag: Received Beta
2019-02-21 13:40:21.502 D/Sometag: Received Gamma
2019-02-21 13:40:24.502 D/Sometag: Received Delta
2019-02-21 13:40:27.502 D/Sometag: Received Epsilon
关于java - rxjava2 中的运算符延迟,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54802759/