Android RXJava在完成其他任务时创建一个可观察的
嗨,我已经为此挣扎了一段时间了。感谢您的帮助 我有一个要求,在完成另一个观察后运行一个观察。例如,下面的代码创建了一个从输入值到值+10的可观察值Android RXJava在完成其他任务时创建一个可观察的,android,rxjs,rx-java,Android,Rxjs,Rx Java,嗨,我已经为此挣扎了一段时间了。感谢您的帮助 我有一个要求,在完成另一个观察后运行一个观察。例如,下面的代码创建了一个从输入值到值+10的可观察值 Observable<ColoredIntegerModel> getSequenceObservable(int value, int delay, int color) { return Observable.range(value,10) .map(i -> {
Observable<ColoredIntegerModel> getSequenceObservable(int value, int delay, int color) {
return Observable.range(value,10)
.map(i -> {
Log.d(TAG, "Value " + i
+ " evaluating on " + Thread.currentThread().getName()
+ " emitting item at " + System.currentTimeMillis());
try {
Thread.sleep(delay);
} catch (InterruptedException e) {
}
return new ColoredIntegerModel(i, color);
});
}
我创建了两个可观察的对象,如下所示
Observable<ColoredIntegerModel> observable1 = getSequenceObservable(1, 1000, Color.BLUE);
Observable<ColoredIntegerModel> observable11 = getSequenceObservable(11, 1000, Color.RED);
mDisposable =
observable1.concatWith(observable11)
.doOnDispose(() -> {Log.d(TAG, "observable disposed");})
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.repeat(2)
.subscribe((m) -> {
Utils.appendColoredText(mResultTextView, "Adding item "
+ m.getValue().toString() + "\n", m.getColor());
});
Observable-Observable 1=getSequenceObservable(11000,颜色.蓝色);
Observable observable11=getSequenceObservable(11,1000,颜色为红色);
可计量=
可观察到的1.concatWith(可观察到的11)
.doOnDispose(()->{Log.d(标记,“可观察到的”);})
.subscribeOn(Schedulers.newThread())
.observeOn(AndroidSchedulers.mainThread())
.重复(2)
.认购((m)->{
Utils.appendColoredText(mResultTextView,“添加项”
+m.getValue().toString()+“\n”,m.getColor());
});
上面的代码打印1..10(蓝色,每个项目延迟1s)和11..20(红色)
到目前为止还不错
但我的要求是,只有在第一个观测完成之后,才能创建第二个观测。事实上,它可以是一个可观察的数组,其中n+1个可观察的只有在第n个完成后才被创建。每个可观察对象可以发射多个项目。是否有运营商可以做到这一点 我不知道我是否理解正确,但如果您想在订阅时创建
可观察对象
,您需要操作员您可以从上一个的doOnCompleted()开始下一个可观察对象
Observable<MyData> observable1 = ...;
Observable<MyData> observable2 = ...;
Observable<MyData> observable3 = ...;
Observable
.concat(observable1.doOnCompleted(this::onCompleteObservable1),
observable2.doOnCompleted(this::onCompleteObservable2),
observable3.doOnCompleted(this::onCompleteObservable3))
...
...
可观察1=。。。;
可观测2=。。。;
可观测的可观测的3=。。。;
可观察
.concat(observed1.doOnCompleted)(此::oncompleteeobserved1),
observable2.doOnCompleted(此::onCompleteObservable2),
observable3.doOnCompleted(this::onCompleteObservable3))
...
...
希望对您有所帮助。谢谢。我正在找延时接线员。它间接地解决了我的问题。
Observable<MyData> observable1 = ...;
Observable<MyData> observable2 = ...;
Observable<MyData> observable3 = ...;
Observable
.concat(observable1.doOnCompleted(this::onCompleteObservable1),
observable2.doOnCompleted(this::onCompleteObservable2),
observable3.doOnCompleted(this::onCompleteObservable3))
...
...