rxjava : ambArray 、ambWith

merge()		: 并行无序
concat()	: 串行有序
amb()		: 先发才收,其他不收
zip()		: 有序,不完全(以最少数量)

示例:

//当你传递多个Observable给amb操作符时,该操作符只发射其中一个Observable的数据和通知:
// 首先发送通知给amb操作符的的那个Observable,
// 不管发射的是一项数据还是一个onError或onCompleted通知,amb将忽略和丢弃其它所有Observables的发射物

//给定多个Observable,只让第一个发射数据的Observable发射全部数据。
//谁先出发,就接收谁,其他都不接收
//ambWith和ambArray差不多,Observable.amb(o1,o2)和o1.ambWith(o2)是一样的效果。
@Test
public void testAmbArray() {
    Observable o1 = Observable.just("a", "b", "c").delay(2000, TimeUnit.MILLISECONDS);
    Observable o2 = Observable.just("=", "-", "*").delay(1000, TimeUnit.MILLISECONDS);
    Observable o3 = Observable.just("1", "2", "3");

    Observable observable = Observable.ambArray(o1, o2, o3);
    Disposable disposable = observable.subscribe(new Consumer<String>() {
        @Override
        public void accept(@NonNull String s) throws Exception {
            System.out.println("accept: " + s);
        }
    });
}
//accept: 1
//accept: 2
//accept: 3

@Test
public void testAmbWith() {
    Observable o1 = Observable.just("a", "b", "c").delay(2000, TimeUnit.MILLISECONDS);
    Observable o2 = Observable.just("=", "-", "*").delay(1000, TimeUnit.MILLISECONDS);
    Observable o3 = Observable.just("1", "2", "3");

    Observable observable = o1.ambWith(o2).ambWith(o3);
    Disposable disposable = observable.subscribe(new Consumer<String>() {
        @Override
        public void accept(@NonNull String s) throws Exception {
            System.out.println("accept: " + s);
        }
    });
}
//accept: 1
//accept: 2
//accept: 3
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值