gpt4 book ai didi

java - 为什么合并运算符不返回它接收到的第一个可观察值?

转载 作者:行者123 更新时间:2023-11-28 20:50:39 25 4
gpt4 key购买 nike

我的理解是,我可以将合并运算符与其他 2 个 Observable 一起使用,然后使用 firstOrError 运算符来返回第一个返回结果的 Observable。

我正在尝试运行一个测试用例,但它似乎没有按照我的预期运行,所以不确定我的测试是否有问题或者我使用的运算符不正确,如果有人,我将不胜感激可以帮助我。如果有人知道实现相同结果的更好方法,那也很好。

这是我的测试用例:

@Test
public void testMergeOperator() {
TestObserver<String> observer = new TestObserver<>();

Observable<String> foo = Observable.just("FOO");
Observable<String> bar = Observable.timer(2, SECONDS).just("BAR");

foo.publish(first -> Observable.merge(first, bar.takeUntil(first))
.firstOrError()
.toObservable())
.subscribe(observer);

assertEquals(1, observer.valueCount());
assertEquals("FOO", observer.values().get(0));
}

我得到:

junit.framework.ComparisonFailure:预期:FOO实际:BAR

最佳答案

just替换为map:

@Test
public void testMergeOperator() {
TestObserver<String> observer = new TestObserver<>();

Observable<String> foo = Observable.just("FOO");
Observable<String> bar = Observable.timer(2, TimeUnit.SECONDS).map(v -> "BAR");

foo.publish(first -> Observable.merge(first, bar.takeUntil(first))
.firstOrError()
.toObservable())
.subscribe(observer);

assertEquals(1, observer.valueCount());
assertEquals("FOO", observer.values().get(0));
}

关于java - 为什么合并运算符不返回它接收到的第一个可观察值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48664038/

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