来自Observable的BehaviorSubject行为

时间:2014-04-22 16:23:13

标签: c# .net system.reactive

我希望从BehaviorSubject IObservable获得与.Take(1)相同的行为。

当我执行IObservable时,我希望它返回“默认值”,直到基础IObservable更改它。基础BehaviorSubject“泵”一次并完成。

我不希望实际使用{{1}}(这会使这个变得微不足道)因为我认为这是不好的形式。

这可能吗?

2 个答案:

答案 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);
}