Есть ли расширение как StartWith, но для конца наблюдаемой последовательности?

Я хочу добавить дополнительный "закрывающий" элемент к моей наблюдаемой последовательности. Есть ли расширение Reactive LINQ, подобное StartWith но для конца наблюдаемой последовательности?

Вот приблизительное значение того, что я хочу, хотя, похоже, не срабатывает последний элемент:

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

1 ответ

Решение

Ваше "приближение" является правильным ответом. Concat добавлю element до конца вашего исходного потока, но только если:

  1. Источник завершен
  2. Источник не ошибка

Возможно, если вы не получаете это, ваш source поток на самом деле не заканчивается?

Возможно, будет лучше, если вы покажете нам больше своего кода и т. Д. Не существует метода API "из коробки" (например, StartsWith), который делает это для вас, но с помощью Concat + Observable.Return это довольно разумный способ сделать это самостоятельно.

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);
Другие вопросы по тегам