gpt4 book ai didi

android - 如何在 RxJava2 中使用带有 lambda 表达式的 DisposableObserver

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:24:29 26 4
gpt4 key购买 nike

我的用例是想在我的 onNext 中的某个条件后进行处理。所以尝试使用 DisposableObserver。这是有效的代码

Observable.just(1, 2, 3, 4)
.subscribe(new DisposableObserver<Integer>() {
@Override
public void onNext(Integer integer) {
System.out.println("onNext() received: " + integer);
if (integer == 2) {
dispose();
}
}
@Override
public void onError(Throwable e) { System.out.println("onError()"); }
@Override
public void onComplete() { System.out.println("onComplete()"); }
}
);

现在,如果您尝试用 lambda 替换它,它会将 lambda 视为

subscribe(Consumer<? super T> onNext, Consumer<? super Throwable> onError,Action onComplete)

现在就这样做。通过从 onSubscribe 保存一次性用品然后调用 disposable.dispose();从下一个。

  private Disposable disposable;
private void disposableObserverTest() {
Observable.just(1, 2, 3, 4)
.subscribe(integer -> {
System.out.println("onNext() received: " + integer);
if (integer == 2) {
disposable.dispose();
}

}, throwable -> System.out.println("error"),
() -> System.out.println("complete"),
disposable1 -> {
this.disposable = disposable1;
});
}

但是,如果你想直接调用 dispose() 如何使用 lambda 来实现呢?

最佳答案

您可以使用 takeUntil 来关闭可观察对象。

@Test
public void takeUntil() throws Exception {
Observable.just(1, 2, 3, 4)
.takeUntil(integer -> integer == 2)
.test()
.assertValues(1, 2);
}

关于android - 如何在 RxJava2 中使用带有 lambda 表达式的 DisposableObserver,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43470676/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com