RxJava操作符实践:7_条件和布尔操作之9_sequenceEqual

一、描述

判定两个Observables是否发射相同的数据序列。

传递两个Observable给SequenceEqual操作符,它会比较两个Observable的发射物,如果两个序列是相同的(相同的数据,相同的顺序,相同的终止状态),它就发射true,否则发射false。

它还有一个版本接受第三个参数,可以传递一个函数用于比较两个数据项是否相同。

这个操作符默认不在任何特定的调度器上执行。

二、示意图

sequenceEqual

三、示例代码

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
Observable observable1 = Observable.just(1, 2, 3, 4).delay(1000, TimeUnit.MILLISECONDS);
Observable observable2 = Observable.just(1, 2, 3, 4).delay(2000, TimeUnit.MILLISECONDS);

Observable.sequenceEqual(observable1, observable2)
.subscribe(new Subscriber<Boolean>() {
@Override
public void onCompleted() {
System.out.println("onCompleted.");
}

@Override
public void onError(Throwable e) {
System.out.println("onError: " + e.getMessage());
}

@Override
public void onNext(Boolean aBoolean) {
System.out.println("onNext: " + aBoolean);
}
});

四、运行结果

1
2
onNext: true
onCompleted.

五、更多

async操作符还有以下变体:

  • sequenceEqual(Observable,Observable,Func2)

详情可查阅下面的参考资料。

六、参考资料

ReactiveX官方文档

ReactiveX文档中文翻译

PS:欢迎关注 SherlockShi 个人博客

感谢你的支持,让我继续努力分享有用的技术和知识点!