1

我想在我的可观察序列中附加一个额外的“关闭”项目。是否有一个反应式 LINQ 扩展类似于StartWith但用于可观察序列的结尾?

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

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

2 回答 2

5

您的“近似值”是正确答案。Concat将添加element到源流的末尾,但前提是:

  1. 源完成
  2. 来源不出错

也许如果你没有得到它,你的source流实际上并没有终止?

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

于 2016-11-12T21:19:18.617 回答
0

System.Reactive包包含非标准Append和操作符Prepend

// 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);
于 2020-06-22T11:49:37.363 回答