为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

九州编程 2019-05-24 16:03:25
我有一个集合,其中包含了若干Message对象。我想通过RxJava从集合中每隔一秒依次发送集合中的对象我一开始的时候想这样操作,发现一次也不发送对象FlowablemessageFlowable=Flowable.fromIterable(mock.messages);FlowabletimeFlowable=Flowable.interval(1,TimeUnit.SECONDS);Flowableflowable=Flowable.zip(messageFlowable,timeFlowable,newBiFunction(){@OverridepublicStringapply(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...
查看完整描述

2 回答

?
侃侃无极

TA贡献2051条经验 获得超10个赞

RxJava我没用过,但我用过RxJS,大体思想应该一下你应该这样先起一个定时器的流,然后每个流都去接上新的流。因为interval的时间不保准,所以用flatMap使用流上所有的数据。具体的API可能不一样,但是大致是这个思想吧。
Flowable.interval(1,TimeUnit.SECONDS).flatMap(()=>returnmessageFlowable);
                            
查看完整回答
反对 回复 2019-05-24
  • 2 回答
  • 0 关注
  • 1243 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信