RxJava怎么定时依次发送集合的每个元素?

我有一个集合,其中包含了若干Message对象。我想通过RxJava从集合中每隔一秒依次发送集合中的对象
我一开始的时候想这样操作,发现一次也不发送对象
FlowablemessageFlowable=Flowable.fromIterable(mock.messages);
FlowabletimeFlowable=Flowable.interval(1,TimeUnit.SECONDS);
Flowableflowable=Flowable.zip(messageFlowable,timeFlowable,newBiFunction(){
@Override
publicStringapply(Messagemessage,LongaLong)throwsException{
returnmessage.content;
}
});
flowable.subscribe(/*....*/)
后来我就想用这种方式
Flowable.fromIterable(mock.messages)
.map(message->message.content)
.delay(1,TimeUnit.SECONDS)
.subscribe(s->Timber.d("s=%s",s));
但是发现集合一瞬间就被发送完了。并没有被延时。
有什么办法可以延时发送集合吗?
delay(1s)delay(1s)delay(1s)
0----------->1----------->2----------->3...
九州编程
浏览 1244回答 2
2回答

侃侃无极

RxJava我没用过,但我用过RxJS,大体思想应该一下你应该这样先起一个定时器的流,然后每个流都去接上新的流。因为interval的时间不保准,所以用flatMap使用流上所有的数据。具体的API可能不一样,但是大致是这个思想吧。Flowable.interval(1,TimeUnit.SECONDS).flatMap(()=>returnmessageFlowable);
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript