一、描述
给定两个或多个Observables,它只发射首先发射数据或通知的那个Observable的所有数据。
当你传递多个Observable给Amb时,它只发射其中一个Observable的数据和通知:首先发送通知给Amb的那个,不管发射的是一项数据还是一个onError或onCompleted通知。Amb将忽略和丢弃其它所有Observables的发射物。
RxJava的实现是amb,有一个类似的对象方法ambWith。例如,Observable.amb(o1,o2)和o1.ambWith(o2)是等价的。
这个操作符默认不在任何特定的调度器上执行。
二、示意图
三、示例代码
1 | Observable just1 = Observable.just(1, 2, 3).delay(1000, TimeUnit.MILLISECONDS); |
四、运行结果
1 | onNext: 11 |
由运行结果可以看出,just2在800毫秒的时候,发射了第1个数据给Amb,Amb就只发射just2的数据,而忽略了其它Observable的数据。
五、参考资料
PS:欢迎关注 SherlockShi 个人博客