如何解决一段时间后使用RxJava发射项目
我想在一段时间后使用RxJava发出项目。 我提供了一些伪代码以明确说明我想要的东西
class Segment(
val startTime: Int,val duration: Int
)
fun main() {
val segments = listof(
Segment(0,1500),Segment(1500,3000),Segment(4500,450)
)
Observable.fromIterable(segments)
.period { segment ->
waitFor = segment.duration // here we set a delay for the next item
}
.subscribe { segment ->
doSomeWork(segment.startTime) // first item should be emmited immediatly
}
}
您认为我可以使用Rx做出优雅的解决方案吗?我应该使用什么运算符。谢谢
解决方法
在我的duration
版Segment
对象中,是发射startTime
之前要等待的时间(不是等待下一个项目的时间)。
我已经使用startWith
发出了第一项,没有任何延迟。
concat
等待每个可观察对象都已完成,然后再订阅下一个可观察对象,以维持顺序。
@Test
public void so_delay() {
List<Observable<Integer>> segments = Stream.of(
new Segment(3,1500),new Segment(4,3000),new Segment(5,4500)
)
.map(s -> Observable.just(s.startTime).delay(s.duration,TimeUnit.MILLISECONDS))
.collect(Collectors.toList());
Observable.concat(segments)
.startWith(0)
.blockingSubscribe(e -> System.out.println("------> :" + e));
}
为此,我使用的是Java抱歉
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。