io.reactivex.Flowable.takeUntil()方法的使用及代码示例

x33g5p2x  于2022-01-19 转载在 其他  
字(8.4k)|赞(0)|评价(0)|浏览(194)

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

Flowable.takeUntil介绍

[英]Returns a Flowable that emits items emitted by the source Publisher, checks the specified predicate for each item, and then completes when the condition is satisfied.

The difference between this operator and #takeWhile(Predicate) is that here, the condition is evaluated after the item is emitted. Backpressure: The operator is a pass-through for backpressure; the backpressure behavior is determined by the upstream source and the downstream consumer. Scheduler: takeUntil does not operate by default on a particular Scheduler.
[中]返回一个可流动项,该可流动项发出源发布服务器发出的项,检查每个项的指定谓词,然后在满足条件时完成。
此运算符与#takeWhile(谓词)之间的区别在于,在这里,条件是在发出项之后计算的。背压:操作员是背压的传递者;背压行为由上游气源和下游耗电元件决定。调度程序:默认情况下,TakeTill不会在特定调度程序上运行。

代码示例

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

  1. @Override
  2. public Flowable<Integer> apply(Flowable<Integer> c) throws Exception {
  3. return c.takeUntil(Flowable.never());
  4. }
  5. });

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

  1. @Override
  2. public Flowable<Integer> apply(Flowable<Integer> xs) {
  3. return xs.takeUntil(xs.skipWhile(new Predicate<Integer>() {
  4. @Override
  5. public boolean test(Integer i) {
  6. return i <= 3;
  7. }
  8. }));
  9. }

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

  1. @Override
  2. public Flowable<Object> apply(Flowable<Object> f) throws Exception {
  3. return f.takeUntil(Functions.alwaysFalse());
  4. }
  5. });

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

  1. @Test(expected = NullPointerException.class)
  2. public void takeUntilPredicateNull() {
  3. just1.takeUntil((Predicate<Integer>)null);
  4. }

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

  1. @Test(expected = NullPointerException.class)
  2. public void takeUntilPublisherNull() {
  3. just1.takeUntil((Publisher<Integer>)null);
  4. }

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

  1. @Test(expected = NullPointerException.class)
  2. public void takeUntilFlowableNull() {
  3. just1.takeUntil((Flowable<Integer>)null);
  4. }

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

  1. @Override
  2. public Publisher<Integer> createPublisher(long elements) {
  3. return
  4. Flowable.range(0, (int)elements).takeUntil(Flowable.never())
  5. ;
  6. }
  7. }

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

  1. @Test
  2. public void takeEmpty() {
  3. Subscriber<Object> subscriber = TestHelper.mockSubscriber();
  4. Flowable.empty().takeUntil(new Predicate<Object>() {
  5. @Override
  6. public boolean test(Object v) {
  7. return true;
  8. }
  9. }).subscribe(subscriber);
  10. verify(subscriber, never()).onNext(any());
  11. verify(subscriber, never()).onError(any(Throwable.class));
  12. verify(subscriber).onComplete();
  13. }

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

  1. @Test
  2. public void takeFirst() {
  3. Subscriber<Object> subscriber = TestHelper.mockSubscriber();
  4. Flowable.just(1, 2).takeUntil(new Predicate<Integer>() {
  5. @Override
  6. public boolean test(Integer v) {
  7. return true;
  8. }
  9. }).subscribe(subscriber);
  10. verify(subscriber).onNext(1);
  11. verify(subscriber, never()).onNext(2);
  12. verify(subscriber, never()).onError(any(Throwable.class));
  13. verify(subscriber).onComplete();
  14. }

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

  1. @Test
  2. public void functionThrows() {
  3. Subscriber<Object> subscriber = TestHelper.mockSubscriber();
  4. Predicate<Integer> predicate = new Predicate<Integer>() {
  5. @Override
  6. public boolean test(Integer t1) {
  7. throw new TestException("Forced failure");
  8. }
  9. };
  10. Flowable.just(1, 2, 3).takeUntil(predicate).subscribe(subscriber);
  11. verify(subscriber).onNext(1);
  12. verify(subscriber, never()).onNext(2);
  13. verify(subscriber, never()).onNext(3);
  14. verify(subscriber).onError(any(TestException.class));
  15. verify(subscriber, never()).onComplete();
  16. }

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

  1. @Test
  2. public void takeAll() {
  3. Subscriber<Object> subscriber = TestHelper.mockSubscriber();
  4. Flowable.just(1, 2).takeUntil(new Predicate<Integer>() {
  5. @Override
  6. public boolean test(Integer v) {
  7. return false;
  8. }
  9. }).subscribe(subscriber);
  10. verify(subscriber).onNext(1);
  11. verify(subscriber).onNext(2);
  12. verify(subscriber, never()).onError(any(Throwable.class));
  13. verify(subscriber).onComplete();
  14. }

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

  1. @Test
  2. public void takeSome() {
  3. Subscriber<Object> subscriber = TestHelper.mockSubscriber();
  4. Flowable.just(1, 2, 3).takeUntil(new Predicate<Integer>() {
  5. @Override
  6. public boolean test(Integer t1) {
  7. return t1 == 2;
  8. }
  9. })
  10. .subscribe(subscriber);
  11. verify(subscriber).onNext(1);
  12. verify(subscriber).onNext(2);
  13. verify(subscriber, never()).onNext(3);
  14. verify(subscriber, never()).onError(any(Throwable.class));
  15. verify(subscriber).onComplete();
  16. }

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

  1. @Test
  2. public void testTakeUntilSourceCompleted() {
  3. Subscription sSource = mock(Subscription.class);
  4. Subscription sOther = mock(Subscription.class);
  5. TestObservable source = new TestObservable(sSource);
  6. TestObservable other = new TestObservable(sOther);
  7. Subscriber<String> result = TestHelper.mockSubscriber();
  8. Flowable<String> stringObservable = Flowable.unsafeCreate(source).takeUntil(Flowable.unsafeCreate(other));
  9. stringObservable.subscribe(result);
  10. source.sendOnNext("one");
  11. source.sendOnNext("two");
  12. source.sendOnCompleted();
  13. verify(result, times(1)).onNext("one");
  14. verify(result, times(1)).onNext("two");
  15. verify(sSource, never()).cancel();
  16. verify(sOther, times(1)).cancel();
  17. }

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

  1. @Test
  2. public void sourceThrows() {
  3. Subscriber<Object> subscriber = TestHelper.mockSubscriber();
  4. Flowable.just(1)
  5. .concatWith(Flowable.<Integer>error(new TestException()))
  6. .concatWith(Flowable.just(2))
  7. .takeUntil(new Predicate<Integer>() {
  8. @Override
  9. public boolean test(Integer v) {
  10. return false;
  11. }
  12. }).subscribe(subscriber);
  13. verify(subscriber).onNext(1);
  14. verify(subscriber, never()).onNext(2);
  15. verify(subscriber).onError(any(TestException.class));
  16. verify(subscriber, never()).onComplete();
  17. }

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

  1. @Test /* (timeout = 8000) */
  2. public void testSingleSourceManyIterators() throws InterruptedException {
  3. Flowable<Long> f = Flowable.interval(250, TimeUnit.MILLISECONDS);
  4. PublishProcessor<Integer> terminal = PublishProcessor.create();
  5. Flowable<Long> source = f.takeUntil(terminal);
  6. Iterable<Long> iter = source.blockingNext();
  7. for (int j = 0; j < 3; j++) {
  8. BlockingFlowableNext.NextIterator<Long> it = (BlockingFlowableNext.NextIterator<Long>)iter.iterator();
  9. for (long i = 0; i < 10; i++) {
  10. Assert.assertEquals(true, it.hasNext());
  11. Assert.assertEquals(j + "th iteration next", Long.valueOf(i), it.next());
  12. }
  13. terminal.onNext(1);
  14. }
  15. }

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

  1. @Test
  2. public void delayAndTakeUntilNeverSubscribeToSource() {
  3. PublishProcessor<Integer> delayUntil = PublishProcessor.create();
  4. PublishProcessor<Integer> interrupt = PublishProcessor.create();
  5. final AtomicBoolean subscribed = new AtomicBoolean(false);
  6. Flowable.just(1)
  7. .doOnSubscribe(new Consumer<Subscription>() {
  8. @Override
  9. public void accept(Subscription s) {
  10. subscribed.set(true);
  11. }
  12. })
  13. .delaySubscription(delayUntil)
  14. .takeUntil(interrupt)
  15. .subscribe();
  16. interrupt.onNext(9000);
  17. delayUntil.onNext(1);
  18. Assert.assertFalse(subscribed.get());
  19. }

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

  1. @Test
  2. public void backpressure() {
  3. TestSubscriber<Integer> ts = new TestSubscriber<Integer>(5L);
  4. Flowable.range(1, 1000).takeUntil(new Predicate<Integer>() {
  5. @Override
  6. public boolean test(Integer v) {
  7. return false;
  8. }
  9. }).subscribe(ts);
  10. ts.assertNoErrors();
  11. ts.assertValues(1, 2, 3, 4, 5);
  12. ts.assertNotComplete();
  13. }

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

  1. @Test
  2. public void testErrorIncludesLastValueAsCause() {
  3. TestSubscriber<String> ts = new TestSubscriber<String>();
  4. final TestException e = new TestException("Forced failure");
  5. Predicate<String> predicate = new Predicate<String>() {
  6. @Override
  7. public boolean test(String t) {
  8. throw e;
  9. }
  10. };
  11. Flowable.just("abc").takeUntil(predicate).subscribe(ts);
  12. ts.assertTerminated();
  13. ts.assertNotComplete();
  14. ts.assertError(TestException.class);
  15. // FIXME last cause value is not saved
  16. // assertTrue(ts.errors().get(0).getCause().getMessage().contains("abc"));
  17. }

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

  1. @Test
  2. public void disconnectBeforeConnect() {
  3. BehaviorProcessor<Integer> processor = BehaviorProcessor.create();
  4. Flowable<Integer> flowable = processor
  5. .replay(1)
  6. .refCount();
  7. flowable.takeUntil(Flowable.just(1)).test();
  8. processor.onNext(2);
  9. flowable.take(1).test().assertResult(2);
  10. }
  11. }

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

  1. @Test
  2. public void testBackpressure() {
  3. PublishProcessor<Integer> until = PublishProcessor.create();
  4. TestSubscriber<Integer> ts = new TestSubscriber<Integer>(0L);
  5. Flowable.range(1, 10).takeUntil(until).subscribe(ts);
  6. assertTrue(until.hasSubscribers());
  7. ts.request(1);
  8. ts.assertValue(1);
  9. ts.assertNoErrors();
  10. ts.assertNotComplete();
  11. until.onNext(5);
  12. ts.assertComplete();
  13. ts.assertNoErrors();
  14. assertFalse("Until still has observers", until.hasSubscribers());
  15. assertFalse("TestSubscriber is unsubscribed", ts.isCancelled());
  16. }

相关文章

Flowable类方法