RxJava 操作符——连接和合并
RxJava 是最重要的库,它被 Android 开发人员广泛使用。它简化了我们的生活。 RxJava 用于多线程、管理后台进程和消除回调地狱。 RxJava 允许我们处理各种复杂的用例。它使我们能够以非常简单的方式完成复杂的事情。它给了我们能力。正如你的超级英雄电影中所说:能力越大,责任越大。 RxJava 包含大量的运算符。我们必须了解它们才能正确使用它们。本节将介绍 Concat 和 Merge 运算符。
康猫
它将两个或多个 Observable 的发射连接起来,而不将它们交错。在发出项目时,它将保持可观察对象的顺序。也就是说,它将发出第一个 observable 中的所有内容,然后是第二个 observable 中的所有项目,依此类推。
让我们看一个例子来帮助你理解:
Java
final String[] gfgList = { "DSA", "Py", "Android", "Java" };
final String[] gfgListTwo = { "Intern", "FullTime", "PartTime" };
final Observable gfgObs1 = Observable.fromArray(gfgList);
final Observable gfgObs2 = Observable.fromArray(gfgListTwo);
Observable.concat(gfgObs1, gfgObs2)
.subscribe(new Observer() {
@Override public void onSubscribe(Disposable d)
{
// Your Code
}
@Override public void onNext(String value)
{
// Your Code
}
@Override public void onError(Throwable e)
{
// Your Code
}
@Override public void onComplete()
{
// Your Code
}
});
Java
final String[] gfgList = {"DSA", "Py", "Android", "Java"};
final String[] gfgListTwo = {"Intern", "FullTime", "PartTime"};
final Observable gfgList = Observable.fromArray(gfgList);
final Observable gfgListTwo = Observable.fromArray(gfgListTwo);
Observable.merge(gfgList, observableSecond)
.subscribe(new Observer() {
@Override
public void onSubscribe(Disposable d) {
// Your Code
}
@Override
public void onNext(String value) {
// Your Code
}
@Override
public void onError(Throwable e) {
// Your Code
}
@Override
public void onComplete() {
// Your Code
}
});
输出:
因为我们使用的是 Concat 运算符,所以顺序将被保留并且值将被发出为:
DSA, Py, Android, Java, Intern, FullTime, PartTime.
合并
它合并多个 Observable 的排放以创建单个 Observable。它不会在发出东西时保持顺序。
现在,像连接一样让我们看一个例子:
Java
final String[] gfgList = {"DSA", "Py", "Android", "Java"};
final String[] gfgListTwo = {"Intern", "FullTime", "PartTime"};
final Observable gfgList = Observable.fromArray(gfgList);
final Observable gfgListTwo = Observable.fromArray(gfgListTwo);
Observable.merge(gfgList, observableSecond)
.subscribe(new Observer() {
@Override
public void onSubscribe(Disposable d) {
// Your Code
}
@Override
public void onNext(String value) {
// Your Code
}
@Override
public void onError(Throwable e) {
// Your Code
}
@Override
public void onComplete() {
// Your Code
}
});
输出:
因为我们使用的是合并运算符,所以可以按任何顺序发出值,例如:
DSA, Android, Intern, Java, FullTime, Py, PartTime
或者
PartTime, Java, FullTime, Android, DSA, Intern, Py
或任何东西。
结论
这就是本文的全部内容,希望它能帮助您理解这两种方法的不同之处,根据我们的用例,我们应该使用 RxJava 中的 Concat 和 Merge运算符。