我有Observable.just("Hello"(,但我想在X秒后发出它。如何实现这一点?
您可以使用延迟运算符:
将可观测量的排放量在时间上向前移动特定量 延迟
延迟运算符通过在发出源可观察对象的每个项目之前暂停特定时间增量(您指定(来修改其源可观察。这具有将可观察对象发出的整个项目序列按指定的增量向前移动的效果。
下面的片段摘自此博客
Observable.create<String> { emitter ->
Log.d("DelayExample", "Create")
emitter.onNext("MindOrks")
emitter.onComplete()
}
.subscribeOn(Schedulers.io())
.delay(2, TimeUnit.SECONDS)
.observeOn(AndroidSchedulers.mainThread())
.subscribe {
Log.d("DelayExample", it)
}
您可以使用Observable.timer
该 Observable 在指定的延迟后发出
0L
,然后完成。默认情况下在
computation
调度程序上运行
你可以做
Observable.timer(3, TimeUnit.SECONDS)
.map(t -> "Hello")
如果你的来源不仅仅是值,而是Observable
,你可以这样做
Observable<String> source = Observable.just("Hello");
Observable.timer(3, TimeUnit.SECONDS)
.concatMap(t -> source);
只需使用Timer()
功能,如下所示:
Observable.Timer(TimeSpan.FromSeconds(X)).Select(_ => "Hello")