异步方法中的Rx StartWith不应用起始值

问题描述 投票:0回答:1

我正在尝试使用StartWith方法将初始值注入RX流:

public async Task<IObservable<Price>) Stream(Instrument instrumentDetails)
{
    var initialPrice = await _svc.GetSomeInitialPrice();

    var stream = _priceObserver.Stream
        .Where(o => o.Symbol == instrumentDetails.Symbol)
        .Select(o => GetPrice(o, instrumentDetails));

    stream.StartWith(initialPrice);

    return stream;
}

但是,由于要获取初始值的调用,因此该方法是异步的。并且无论如何都需要在整个调用堆栈中保持异步]

我发现该值从未添加到开头。我只剩下剩下的了

如果我等待StartWith方法,它将永远不会返回

任何想法我在做什么错

c# system.reactive
1个回答
0
投票

IObservable上的方法不会修改基础对象,它们会返回一个新对象。 stream.StartWith(initialPrice)返回一个新的可观察变量,您可以忽略它,它对stream不起任何作用。

© www.soinside.com 2019 - 2024. All rights reserved.