1

给定以下代码。

EventLoopScheduler scheduler = new EventLoopScheduler(ts => new Thread(ts));

BehaviorSubject<int> subject = new BehaviorSubject<int>(0);

subject
    .ObserveOn(scheduler)
    .CombineLatest(Observable.Interval(TimeSpan.FromSeconds(1), scheduler), (x, y) => x)                        
    .Subscribe(x => Debug.WriteLine(x));

subject.OnNext(1);

为什么要打印?

0
1
0
1
0
1
...

代替:

0
1
1
1
1
1
...
4

1 回答 1

1

首先你的输出看起来很奇怪。我会说他们两个。我猜输出应该是:

1
1
1
1
1

没有 0。这是因为第一个间隔值将在 1 秒内产生 - 绝对是在你调用之后subject.OnNext(1);

另一件事BehaviourSubject<int>是英国版的BehaviorSubject(Of T)吗?:) 如果您有自己的BehaviourSubject实现,请用它扩展您的问题。

于 2012-06-13T08:27:47.380 回答