Observable
.interval(2, TimeUnit.SECONDS)
.switchMap(integer ->
Observable
.just(integer * 2)
.delay(5,SECONDS))
.subscribe(integer -> { System.out.println(integer);});
据我了解,在切换映射后我们应该订阅最后创建的observable,所以我希望在20秒后输出“8”,但它会永远等待
答案 0 :(得分:1)
switchMap()
运算符的操作如下:
结果是延迟的observable将永远不会发出任何东西,因为它将每2秒取消一次。
您需要使用flatMap()
运算符,而不会取消订阅每个发布的值。