以下是我想要实现的目标:
|--------------------A-A-A-A-A-A| primary (behavior subject)
|-B-B-B-B-B-B-B-B-B-B-B-B-B-B-B-| secondary (flowable)
|-B-B-B-B-B-B-B-B-B-BA-A-A-A-A-A| result (flowable)
基本上,我正在等待用户输入(通过主要可观察的),但如果用户尚未输入任何内容,我想提供系统生成的值。一旦收到用户输入,辅助可观察量将不再使用。
我研究了 switchIfEmpty
和 combineLatest
但它们不符合我的需求,因为:
- switchIfEmpty 仅在主要可观察信号 onComplete 时有效。
- combineLatest 仅当两个可观察量都发出值时才有效
有什么办法可以做到这一点吗?
最佳答案
我不确定这是否是最简单或最优雅的方法,但这可行:
const a = Observable.interval(5000);
const b = Observable.interval(1000);
const sharedA = a.shareReplay(1);
const result = b.takeUntil(sharedA).concat(sharedA);
另一种也许简单的方法是
const sharedA = a.share();
const result = b.takeUntil(sharedA).merge(sharedA);
关于java - 只要主要可观察值未发出任何值,就使用辅助/备用可观察值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44933668/