我有一个关于将RxJava与interval运算符一起使用的场景。事实上,我可以为Job A设置间隔。就像那样
Observable
.interval(0, 10, TimeUnit.SECONDS)
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.map(new Func1<Long, List<Bean>>() {
@Override
public List<Bean> call(Long pLong) {
return null;
}
})
.subscribe(new Action1<List<Bean>>() {
@Override
public void call(List<Bean> pO) {
if (pO.size() > 0) setData(pO);
}
});
但是我试图设置作业A,作业B,作业C的间隔,但它们之间的间隔不同。
工作A,工作B,工作C(30秒) 工作A - &gt; 5秒 - &gt;工作B - &gt; 10秒 - &gt;工作C
Observable
.interval(0, 30, TimeUnit.SECONDS)
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.flatMap(new Func1<Long, Observable<Long>>() {
@Override
public Observable<Long> call(Long pLong) {
//Job A
return Observable.interval(0, 5, TimeUnit.SECONDS);
}
})
.flatMap(new Func1<Long, Observable<Long>>() {
@Override
public Observable<Long> call(Long pLong) {
//Job B
return Observable.interval(0, 10, TimeUnit.SECONDS);
}
})
.subscribe(new Action1<Long>>() {
@Override
public void call(Long pO) {
//Job C
if (pO.size() > 0) setData(pO);
}
});
我试着用这样的东西但没有运气。我是Rx的新手,感谢您的任何评论。
答案 0 :(得分:1)
.interval()生成一系列事件,尝试使用.timer()来触发另一个作业,或.interval()。take(1)。你将每5秒开始一次作业B(10秒)(重叠间隔?)