我希望从BehaviorSubject
IObservable
获得与.Take(1)
相同的行为。
当我执行IObservable
时,我希望它返回“默认值”,直到基础IObservable
更改它。基础BehaviorSubject
“泵”一次并完成。
我不希望实际使用{{1}}(这会使这个变得微不足道)因为我认为这是不好的形式。
这可能吗?
答案 0 :(得分:2)
如果您想要一个始终具有初始值的流,您可能希望使用.StartWith()
方法。
除了.TakeUntil()
之外,这将与Lee的答案非常相似。
如果您希望订阅者立即收到最后一个值,您可能需要将其与.Replay(1)
结合使用。
答案 1 :(得分:1)
public static IObservable<T> Behaviour<T>(IObservable<T> source)
{
return Observable.Return(default(T)).TakeUntil(source).Concat(source);
}