gpt4 book ai didi

rx-java - 将 Observable 映射到 Observable

转载 作者:行者123 更新时间:2023-12-05 05:21:27 31 4
gpt4 key购买 nike

我要执行 task 1然后 task 2无需组合他们发出的元素。我有这个:

interface Service {
Observable<Something> doTask1();
Observable<SomethingElse> doTask2();
}

这是让他们返回的好方法吗 Observable<Void>为了合并它们?这两个任务都是独立的,所以第一个可能会返回一个空的 Observable。但是无论如何都必须执行第二个。

public Observable<Void> doTasks() {
Observable.merge(service.doTask1(), service.doTask2());
}

如果是这样,是否有任何“正确”的方式来映射 Observable<Something>Observable<Void> ?我是这样做的:

public class TaskService implements Service {
public Observable<Void> doTask1() {
return getSomething().map(new Func1<Something, Void>() {
@Override
public Void call(Something something) {
return null;
}
});
}
}

任何建议将不胜感激。

最佳答案

将值映射到 Void 是一种有效的方式,但是,RxJava 引入了 Completable,它是 Observable 的变体,它不会发出项目,而只是完成和错误通知.您可以在这里使用它,因为您不关心发出的值,然后您将获得更清晰的 API,并且不需要将值映射为更少的值。

public Completable doTasks() {    
Completable.merge(service.doTask1().toCompletable(), service.doTask2().toCompletable());
}

关于rx-java - 将 Observable<Something> 映射到 Observable<Void>,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42839220/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com