是否有像StartWith这样的扩展但是对于可观察序列的结尾?

时间:2016-11-12 20:19:54

标签: c# system.reactive rx.net

我想追加一个额外的"关闭"项目到我的可观察序列。是否存在类似于StartWith的Reactive LINQ扩展,但是对于可观察序列的结尾?

这是我想要的近似值,虽然它似乎没有触发最后一个元素:

public static IObservable<TSource> EndWith<TSource>(this IObservable<TSource> source, TSource element)
{
    return source.Concat(Observable.Return(element));
}

2 个答案:

答案 0 :(得分:5)

你的'近似'是正确的答案。 Concat会将element添加到源流的末尾,但仅限于:

  1. 来源完成
  2. 来源没有错误
  3. 也许如果你没有得到它,你的source流实际上并没有终止?

    如果您向我们展示更多代码等可能会更好。 没有“开箱即用”的API方法(如StartsWith)为您执行此操作,但使用Concat + Observable.Return是一种非常合理的方法。

答案 1 :(得分:0)

System.Reactive软件包contains是非标准AppendPrepend运算符。

// Append a value to an observable sequence.
public static IObservable<TSource> Append<TSource>(this IObservable<TSource> source,
    TSource value);

// Prepend a value to an observable sequence.
public static IObservable<TSource> Prepend<TSource>(this IObservable<TSource> source,
    TSource value);