rxjava delay:如何从列表中发出的每个项目获得可变延迟? [英] rxjava delay: How to get variable delay on each item emitted from a list?

查看:356
本文介绍了rxjava delay:如何从列表中发出的每个项目获得可变延迟?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我希望从可观察列表中发出的每个项目之间的自定义延迟作为项目本身的函数。
假设我们有一个列表为(项目,延迟):

I want to have custom delays between each item emitted from an observable list as a function of the items themselves. Let's say we have a list as (item, delay):

[("item1", 2),("item2", 1),("item3", 2),("item4", 3),("item5", 2),("item6", 3)]

我希望输出类似于:

0 seconds: 
1 seconds: 
item1
2 seconds: 
item2
3 seconds: 
4 seconds: 
item3
5 seconds: 
6 seconds: 
7 seconds: 
item4
8 seconds: 
9 seconds: 
item5
10 seconds: 
11 seconds: 
12 seconds: 
item6
Completed!
13 seconds: 

我不知道如何通过延迟/定时器运算符来实现这一目标。通过延迟文档,但无法找到一个简单的方法。任何指针都会有所帮助。谢谢!

I am not sure how to best accomplish this with delay/timer operators. Went through delay documentation but couldn't figure out a straightforward way. Any pointers would be helpful. Thanks!

推荐答案

不需要任何花哨的东西。只需使用 concatMap 延迟运算符

No need for anything fancy. Just use concatMap and delay operators

jla.concatMap(s -> Observable.just(s).delay(s.delay, TimeUnit.SECONDS))           
  .subscribe(s1 -> System.out.println(s1.name + " just came..."), 
             e -> {}, 
             () -> System.out.println("Everybody came!")); 

这篇关于rxjava delay:如何从列表中发出的每个项目获得可变延迟?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆