我使用Observable.create(...)
包装一些异步代码。异步代码需要“活动”五秒钟,然后才能停止。这就是我目前停止它的方式:
Observable.<MyObject>create(emitter -> {
// Some async code
emitter.setDisposable(Disposables.fromRunnable(() -> {
// Stop the above async code
}));
// Wait for 5 seconds until the async code above has had enough time to finish its task.
Thread.sleep(5000);
if (!emitter.isDisposed()) {
// Stop the above async code
emitter.setDisposable(null);
}
})...
我不确定这是否是最佳方式,因为使用了Thread.sleep(5000)
。有没有更好的方法来使用一些RxJava代码?
答案 0 :(得分:1)
存在take
的定时重载,允许您在源指定的时间过去之前从源获取项目:
Observable.<MyObject>create(emitter -> {
// Some async code
emitter.setDisposable(Disposables.fromRunnable(() -> {
// Stop the above async code
}));
})
.take(5, TimeUnit.SECONDS);
您仍需在Disposable
设置create
。