IObservable - Игнорирование предыдущего результата - PullRequest
1 голос
/ 16 марта 2011

У меня есть IObservable, который может быть реализован как BehaviorSubject, ReplaySubject или что-то подобное.

В следующем сценарии я не хочу, чтобы подписчик выбирал последнее кэшированное значение, вместо этого я хочу, чтобы он выбрал следующее значение, которое будет получено. Есть идеи?

var subject = new BehaviorSubject(1);
subject.OnNext(2);

subject.Subscribe(x => Console.WriteLine(x));

subject.OnNext(3);

Обратите внимание, число, которое я хочу напечатать, равно 3 ... Я предполагаю, что мне нужно поместить один из реактивных методов расширения между "subject.Subscribe", чтобы получить новую наблюдаемую информацию или что-то в этом роде.

Ответы [ 3 ]

1 голос
/ 18 марта 2011

Это должно делать то, что вы хотите:

var subject = new BehaviorSubject(1);
subject.OnNext(2);

subject
       .Skip(1) // 
       .Subscribe(x => Console.WriteLine(x));

subject.OnNext(3);
0 голосов
/ 17 марта 2011

Это делает это для вас?

var subject = new BehaviorSubject<int>(1);

subject.OnNext(2);

var co = subject.Publish();

co.Subscribe(x => Console.WriteLine(x));

subject.OnNext(3);

co.Connect();
0 голосов
/ 16 марта 2011

В вашем конкретном фрагменте вы можете просто использовать обычный предмет и получить то, что вы хотите. Или для простуды Observable, вы, вероятно, хотите someSubject.Publish().RefCount()

...