也许可以完成
Maybe to Completable
我有一个 Maybe<>
源和一些我想用这个值执行的操作,如果可能不为空的话:
// Maybe<T> maybe();
// Completable action(T value);
return maybe().flatMapCompletable(val -> action(val));
但是当 maybe 为空时,我想让 'completed' 可完成:
return Completable.complete();
如何进行此切换:如果 maybe 不为空,则获取一个可完成的,否则获取另一个?
好吧,我已经写了两个测试,我认为你想要的这种行为是开箱即用的。 maybeTest 将在不调用 saveToDb 的情况下完成。 maybeTest2 将调用 saveToDb 并将值展平并完成。
@Test
public void maybeTest() throws Exception {
Completable completable = Maybe.<Integer>empty()
.flatMapCompletable(o -> {
System.out.println(o);
return saveToDb(5);
});
completable.test().await().assertComplete();
}
@Test
public void maybeTest2() throws Exception {
Completable completable = Maybe.just(5)
.flatMapCompletable(o -> {
System.out.println(o);
return saveToDb(5);
});
completable.test().await().assertComplete();
}
private Completable saveToDb(long value) {
return Completable.complete();
}
我有一个 Maybe<>
源和一些我想用这个值执行的操作,如果可能不为空的话:
// Maybe<T> maybe();
// Completable action(T value);
return maybe().flatMapCompletable(val -> action(val));
但是当 maybe 为空时,我想让 'completed' 可完成:
return Completable.complete();
如何进行此切换:如果 maybe 不为空,则获取一个可完成的,否则获取另一个?
好吧,我已经写了两个测试,我认为你想要的这种行为是开箱即用的。 maybeTest 将在不调用 saveToDb 的情况下完成。 maybeTest2 将调用 saveToDb 并将值展平并完成。
@Test
public void maybeTest() throws Exception {
Completable completable = Maybe.<Integer>empty()
.flatMapCompletable(o -> {
System.out.println(o);
return saveToDb(5);
});
completable.test().await().assertComplete();
}
@Test
public void maybeTest2() throws Exception {
Completable completable = Maybe.just(5)
.flatMapCompletable(o -> {
System.out.println(o);
return saveToDb(5);
});
completable.test().await().assertComplete();
}
private Completable saveToDb(long value) {
return Completable.complete();
}