为了用rxscala测试我的反应程序,我需要构建一个Observable
:
val numberStream: Observable[Int] = Observable.???()
其中
1
1s
4
3s
2
2s
我有一个丑陋的解决方案,Thread
和ReplaySubject
:
val subject: Subject[Int] = ReplaySubject()
val numberStream: Observable = subject
new Thread(new Runnable {
def run = {
subject.onNext(1)
Thread.sleep(1000)
subject.onNext(4)
Thread.sleep(3000)
subject.onNext(2)
Thread.sleep(2000)
}
}).start()
有没有更好的解决方案?
答案 0 :(得分:1)
你可以将几个Observable与延迟连接在一起,最终的Observable为empty
,订阅延迟。
val numberStream = (
Observable.just(1) ++
Observable.just(4).delay(1.second) ++
Observable.just(2).delay(3.second) ++
Observable.empty.delaySubscription(2.second))
作为旁注,如果您正在测试,则应使用TestScheduler
作为delay
的第二个参数传递。{/ p>