Switch()之后的[StartWith(),初始订阅除外

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

[我有一个IObservable<string>,每当一个不同的Switch()发出一个值时,它就会被IObservable淘汰,就像这样:

IObservable<string> Invalidated => stateChanged
    .Select(state => state.CanExecuteChanged.Select(x => _myString))
    .Switch()
    .StartWith(_myString);

在这里,stateChangedIObservable<State>CanExecuteChangedIObservable<bool>。换句话说,每次状态更改时,我都会取消订阅stateCanExecuteChanged可观察对象,并订阅新状态提供的可观察对象。

问题出在StartWith。我第一次订阅我不想发出值。但是,由于状态更改我确实希望发出一个值,每次Switch运行。换句话说,在初始订阅Invalidated时不应该发出任何值,但是在每个Switch上因此我确实希望发出一个值。我可以实现吗?如果可以,如何实现?

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

State定义为:

class State
{
    public IObservable<bool> CanExecuteChanged =>
        Observable.Interval(TimeSpan.FromSeconds(1)).Select(i => i % 2 == 0);
}
© www.soinside.com 2019 - 2024. All rights reserved.