io.reactivex.Observable.doFinally()方法的使用及代码示例

x33g5p2x  于2022-01-25 转载在 其他  
字(5.6k)|赞(0)|评价(0)|浏览(217)

本文整理了Java中io.reactivex.Observable.doFinally()方法的一些代码示例,展示了Observable.doFinally()的具体用法。这些代码示例主要来源于Github/Stackoverflow/Maven等平台,是从一些精选项目中提取出来的代码,具有较强的参考意义,能在一定程度帮忙到你。Observable.doFinally()方法的具体详情如下:
包路径:io.reactivex.Observable
类名称:Observable
方法名:doFinally

Observable.doFinally介绍

[英]Calls the specified action after this Observable signals onError or onCompleted or gets disposed by the downstream.

In case of a race between a terminal event and a dispose call, the provided onFinally action is executed once per subscription.

Note that the onFinally action is shared between subscriptions and as such should be thread-safe.

Scheduler: doFinally does not operate by default on a particular Scheduler. Operator-fusion: This operator supports boundary-limited synchronous or asynchronous queue-fusion.

History: 2.0.1 - experimental
[中]在这个可观察到的信号发出onError或onCompleted或被下游处理后调用指定的操作。
如果终端事件和dispose调用之间存在竞争,则提供的onFinally操作将在每个订阅中执行一次。
请注意,onFinally操作在订阅之间共享,因此应该是线程安全的。
调度器:doFinally默认情况下不会在特定的调度器上运行。运算符融合:该运算符支持边界受限的同步或异步队列融合。
历史:2.0.1-实验性

代码示例

代码示例来源:origin: ReactiveX/RxJava

  1. @Override
  2. public Observable<Object> apply(Observable<Object> f) throws Exception {
  3. return f.doFinally(ObservableDoFinallyTest.this);
  4. }
  5. });

代码示例来源:origin: ReactiveX/RxJava

  1. @Test(expected = NullPointerException.class)
  2. public void nullAction() {
  3. Observable.just(1).doFinally(null);
  4. }

代码示例来源:origin: ReactiveX/RxJava

  1. @Override
  2. public Observable<Object> apply(Observable<Object> f) throws Exception {
  3. return f.doFinally(ObservableDoFinallyTest.this).filter(Functions.alwaysTrue());
  4. }
  5. });

代码示例来源:origin: ReactiveX/RxJava

  1. @Test
  2. public void normalJust() {
  3. Observable.just(1)
  4. .doFinally(this)
  5. .test()
  6. .assertResult(1);
  7. assertEquals(1, calls);
  8. }

代码示例来源:origin: ReactiveX/RxJava

  1. @Test
  2. public void clearIsEmpty() {
  3. Observable.range(1, 5)
  4. .doFinally(this)
  5. .subscribe(new Observer<Integer>() {

代码示例来源:origin: ReactiveX/RxJava

  1. @Test
  2. public void normalJustConditional() {
  3. Observable.just(1)
  4. .doFinally(this)
  5. .filter(Functions.alwaysTrue())
  6. .test()
  7. .assertResult(1);
  8. assertEquals(1, calls);
  9. }

代码示例来源:origin: ReactiveX/RxJava

  1. @Test
  2. public void syncFusedBoundary() {
  3. TestObserver<Integer> to = ObserverFusion.newTest(QueueFuseable.SYNC | QueueFuseable.BOUNDARY);
  4. Observable.range(1, 5)
  5. .doFinally(this)
  6. .subscribe(to);
  7. ObserverFusion.assertFusion(to, QueueFuseable.NONE)
  8. .assertResult(1, 2, 3, 4, 5);
  9. assertEquals(1, calls);
  10. }

代码示例来源:origin: ReactiveX/RxJava

  1. @Test
  2. public void syncFused() {
  3. TestObserver<Integer> to = ObserverFusion.newTest(QueueFuseable.SYNC);
  4. Observable.range(1, 5)
  5. .doFinally(this)
  6. .subscribe(to);
  7. ObserverFusion.assertFusion(to, QueueFuseable.SYNC)
  8. .assertResult(1, 2, 3, 4, 5);
  9. assertEquals(1, calls);
  10. }

代码示例来源:origin: ReactiveX/RxJava

  1. @Test
  2. public void normalEmpty() {
  3. Observable.empty()
  4. .doFinally(this)
  5. .test()
  6. .assertResult();
  7. assertEquals(1, calls);
  8. }

代码示例来源:origin: ReactiveX/RxJava

  1. @Test
  2. public void nonFused() {
  3. TestObserver<Integer> to = ObserverFusion.newTest(QueueFuseable.SYNC);
  4. Observable.range(1, 5).hide()
  5. .doFinally(this)
  6. .subscribe(to);
  7. ObserverFusion.assertFusion(to, QueueFuseable.NONE)
  8. .assertResult(1, 2, 3, 4, 5);
  9. assertEquals(1, calls);
  10. }

代码示例来源:origin: ReactiveX/RxJava

  1. @Test
  2. public void syncFusedConditional() {
  3. TestObserver<Integer> to = ObserverFusion.newTest(QueueFuseable.SYNC);
  4. Observable.range(1, 5)
  5. .doFinally(this)
  6. .filter(Functions.alwaysTrue())
  7. .subscribe(to);
  8. ObserverFusion.assertFusion(to, QueueFuseable.SYNC)
  9. .assertResult(1, 2, 3, 4, 5);
  10. assertEquals(1, calls);
  11. }

代码示例来源:origin: ReactiveX/RxJava

  1. @Test
  2. public void syncFusedBoundaryConditional() {
  3. TestObserver<Integer> to = ObserverFusion.newTest(QueueFuseable.SYNC | QueueFuseable.BOUNDARY);
  4. Observable.range(1, 5)
  5. .doFinally(this)
  6. .filter(Functions.alwaysTrue())
  7. .subscribe(to);
  8. ObserverFusion.assertFusion(to, QueueFuseable.NONE)
  9. .assertResult(1, 2, 3, 4, 5);
  10. assertEquals(1, calls);
  11. }

代码示例来源:origin: ReactiveX/RxJava

  1. @Test
  2. public void normalTake() {
  3. Observable.range(1, 10)
  4. .doFinally(this)
  5. .take(5)
  6. .test()
  7. .assertResult(1, 2, 3, 4, 5);
  8. assertEquals(1, calls);
  9. }

代码示例来源:origin: ReactiveX/RxJava

  1. @Test
  2. public void normalError() {
  3. Observable.error(new TestException())
  4. .doFinally(this)
  5. .test()
  6. .assertFailure(TestException.class);
  7. assertEquals(1, calls);
  8. }

代码示例来源:origin: ReactiveX/RxJava

  1. @Test
  2. public void nonFusedConditional() {
  3. TestObserver<Integer> to = ObserverFusion.newTest(QueueFuseable.SYNC);
  4. Observable.range(1, 5).hide()
  5. .doFinally(this)
  6. .filter(Functions.alwaysTrue())
  7. .subscribe(to);
  8. ObserverFusion.assertFusion(to, QueueFuseable.NONE)
  9. .assertResult(1, 2, 3, 4, 5);
  10. assertEquals(1, calls);
  11. }

代码示例来源:origin: ReactiveX/RxJava

  1. @Test
  2. public void actionThrows() {
  3. List<Throwable> errors = TestHelper.trackPluginErrors();
  4. try {
  5. Observable.just(1)
  6. .doFinally(new Action() {
  7. @Override
  8. public void run() throws Exception {
  9. throw new TestException();
  10. }
  11. })
  12. .test()
  13. .assertResult(1)
  14. .cancel();
  15. TestHelper.assertUndeliverable(errors, 0, TestException.class);
  16. } finally {
  17. RxJavaPlugins.reset();
  18. }
  19. }

代码示例来源:origin: ReactiveX/RxJava

  1. @Test
  2. public void normalEmptyConditional() {
  3. Observable.empty()
  4. .doFinally(this)
  5. .filter(Functions.alwaysTrue())
  6. .test()
  7. .assertResult();
  8. assertEquals(1, calls);
  9. }

代码示例来源:origin: ReactiveX/RxJava

  1. @Test
  2. public void normalErrorConditional() {
  3. Observable.error(new TestException())
  4. .doFinally(this)
  5. .filter(Functions.alwaysTrue())
  6. .test()
  7. .assertFailure(TestException.class);
  8. assertEquals(1, calls);
  9. }

代码示例来源:origin: ReactiveX/RxJava

  1. @Test
  2. public void normalTakeConditional() {
  3. Observable.range(1, 10)
  4. .doFinally(this)
  5. .filter(Functions.alwaysTrue())
  6. .take(5)
  7. .test()
  8. .assertResult(1, 2, 3, 4, 5);
  9. assertEquals(1, calls);
  10. }

代码示例来源:origin: ReactiveX/RxJava

  1. @Test
  2. public void actionThrowsConditional() {
  3. List<Throwable> errors = TestHelper.trackPluginErrors();
  4. try {
  5. Observable.just(1)
  6. .doFinally(new Action() {
  7. @Override
  8. public void run() throws Exception {
  9. throw new TestException();
  10. }
  11. })
  12. .filter(Functions.alwaysTrue())
  13. .test()
  14. .assertResult(1)
  15. .cancel();
  16. TestHelper.assertUndeliverable(errors, 0, TestException.class);
  17. } finally {
  18. RxJavaPlugins.reset();
  19. }
  20. }

相关文章

Observable类方法