Есть ли расширение как 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
до конца вашего исходного потока, но только если:
- Источник завершен
- Источник не ошибка
Возможно, если вы не получаете это, ваш 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);