一、合并型操作符
1、startWith操作符
测试代码如下:
运行结果如下:
总结:
- 先发射startWith事件。
2、concatWith操作符
测试代码如下:
测试结果如下:
总结:
- 后发射concatWith事件。
3、concat操作符
测试代码如下:
运行结果如下:
总结:
- 最多能合并4个被观察者。
- 被观察者按照顺序发射事件,先发射observable1全部事件,再发射observable2全部事件,最后发射observable3的全部事件。
4、merge操作符
测试代码如下:
运行结果如下:
总结:
- 最多能合并4个被观察者。
- 和concat操作符不同的是,被观察者是并发发射事件的。
5、zip操作符
测试代码如下:
运行结果如下:
总结:
- 最多能合并9个被观察者。
- 被观察者发射的事件需要对应关系,如果没有对应就会被忽略。比如被观察1和2发射了3个事件,被观察者3发射了2个事件,那么第三个事件就会被忽略。
二、异常型操作符
1、onErrorReturn
测试代码如下:
运行结果如下:
总结:
- 使用onErrorReturn操作符,异常信息会经过处理继续交给下游的onNext()方法执行。
- 不使用onErrorReturn操作符,异常会交给下游的onError()方法执行。
- 异常可以使用 throw 方式抛出,也可以使用rxJava的标准异常抛出方式 emitter.onError() 。
2、onErrorResumeNext
测试代码如下:
运行结果如下:
总结:
- 使用onErrorResumeNext操作符,可以继续发射事件。
- 不使用onErrorResumeNext操作符,异常会交给下游的onError()方法执行。
- 异常可以使用 throw 方式抛出,也可以使用rxJava的标准异常抛出方式 emitter.onError() 。
3、onExceptionResumeNext
测试代码如下:
运行结果如下:
总结:
- 使用onExceptionResumeNext操作符,可以继续发射事件。
- 使用 emitter.onError() 方式抛出异常,会触发下游的onError()方法。
- 使用 throw 方式抛出异常,会触发下游的onNext()方法。