Добавьте начальное значение в RX Stream / IObservable - PullRequest
0 голосов
/ 20 февраля 2020

У меня есть метод, который возвращает отфильтрованный поток RX как Iobservable:

public IObservable<Price> LivePrices(Instrument instrumentDetails)
        {
            return _priceObserver.Stream
                .Where(o => o.Symbol == instrumentDetails.Symbol )
                .Select(o => GetPrice(o, instrumentDetails));
        }

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

Как я могу это сделать? Я читаю, что Subject может быть как наблюдателем, так и наблюдаемым. Поэтому я думаю, что мне нужно как-то подписаться на него как Subject, добавить первое сообщение в поток, а затем установить его на то, что есть сейчас. Но не могу понять, как это сделать

какие-либо идеи?

1 Ответ

2 голосов
/ 20 февраля 2020

Вы пробовали StartWith?

public IObservable<FxDeal> LiveRates(NegotiationDetails negotiation)
{   
    var obs = _ratesObserver.Stream
        .Where(o => o.BaseCurrency == negotiation.Base && o.TermsCurrency == negotiation.Terms)
        .Select(o => GetFxDeal(o, negotiation));

    return condition ? obs.StartWith(new FxDeal()) : obs;
}
...