经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » Java相关 » Java » 查看文章
RxJava2|Observable
来源:cnblogs  作者:Senyag  时间:2018/10/30 9:04:30  对本文有异议

RxJava2 Observable

前述

java-1.8

maven-3

rxjava-2.2.3

我也不知道称呼为基类好不好...

官方介绍.

0...N flows, 但不支持背压.

示例(Observable的简单使用)

RxJava是基于观察者模式的. Observable是一个被观察者(它的观察者是Observer).

Observable的操作实现类中会生成6份信号(由while实现)并发射, 可它的观察者Observer则只接收前4份信号, 并逐一打印(也就是处理).

Observable的操作实现类 - HelloObservable.java

  1. package yag;
  2. import io.reactivex.Observable;
  3. import io.reactivex.ObservableOnSubscribe;
  4. import io.reactivex.Observer;
  5. import io.reactivex.disposables.Disposable;
  6. /**
  7. * @author Senyag
  8. */
  9. public class HelloObservable {
  10. public void helloObservable(){
  11. // 代码这样排个人觉得会直观一些.
  12. // 初始化Observable
  13. Observable
  14. // create()操作符: 通过以编程方式调用observer方法从头开始创建一个Observable
  15. .create((ObservableOnSubscribe<Integer>) observableEmitter -> {
  16. //observableEmitter: 发射器
  17. Integer i = 0;
  18. while ( i < 7){
  19. i++;
  20. observableEmitter.onNext(i);
  21. }
  22. })
  23. // subscribe()操作符: 根据Observable的发射和通知进行操作
  24. .subscribe(new Observer<Integer>() { // Observer 就是观察者
  25. private Disposable mDisposable;
  26. @Override
  27. public void onSubscribe(Disposable disposable) {
  28. mDisposable = disposable;
  29. }
  30. @Override
  31. public void onNext(Integer i) {
  32. if (i == 5){
  33. // mDisposable可以切断操作, 让Observer不再接收信息.
  34. mDisposable.dispose();
  35. }else {
  36. System.out.println("现在接收到的信号是: 第" + i + "信号");
  37. }
  38. }
  39. @Override
  40. public void onError(Throwable throwable) {
  41. }
  42. @Override
  43. public void onComplete() {
  44. }
  45. });
  46. }
  47. }

执行者 - Runner.java

  1. package yag;
  2. public class Runner {
  3. public static void main(String[] args){
  4. HelloObservable helloObservable = new HelloObservable();
  5. helloObservable.helloObservable();
  6. }
  7. }

执行结果

  1. 现在接收到的信号是: 1信号
  2. 现在接收到的信号是: 2信号
  3. 现在接收到的信号是: 3信号
  4. 现在接收到的信号是: 4信号
  5. Process finished with exit code 0

小结

用到了两个操作符: create()(创建发射器)和subscribe()(处理所发射的请求). 官方中针对这些操作符给出了特定的一页来介绍它们: 传送门

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号