📜  RxJava 操作符——连接和合并

📅  最后修改于: 2022-05-13 01:54:57.640000             🧑  作者: Mango

RxJava 操作符——连接和合并

RxJava 是最重要的库,它被 Android 开发人员广泛使用。它简化了我们的生活。 RxJava 用于多线程、管理后台进程和消除回调地狱。 RxJava 允许我们处理各种复杂的用例。它使我们能够以非常简单的方式完成复杂的事情。它给了我们能力。正如你的超级英雄电影中所说:能力越大,责任越大。 RxJava 包含大量的运算符。我们必须了解它们才能正确使用它们。本节将介绍 Concat 和 Merge 运算符。

康猫

它将两个或多个 Observable 的发射连接起来,而不将它们交错。在发出项目时,它将保持可观察对象的顺序。也就是说,它将发出第一个 observable 中的所有内容,然后是第二个 observable 中的所有项目,依此类推。

图 1. 解释连接

让我们看一个例子来帮助你理解:

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。它不会在发出东西时保持顺序。

图 2. 解释合并。

现在,像连接一样让我们看一个例子:

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运算符。