我正在使用https://github.com/dotnet/reactive 我使用 CombineLatest 将 observableA(通过计时器发出项目)与 observableB(手动插入)结合起来。 在 OnNext 方法中,有时我会向 observableB 插入新值 在这种情况下,OnNext 的新迭代会在当前 OnNext 返回之前立即开始。
_subscription = _observable.ClientData
.CombineLatest(_deviceTypeFilterViewModel.Filters)
.Subscribe(OnNext, OnError);
private void OnNext((IClientDataSlice slice, Filtter filter) sliceWithFilter)
{
Logger.Log(Slice.Number + " start");
//... pseudo code:
_deviceTypeFilterViewModel.Filters.Add(someValue)
Logger.Log(Slice.Number + " end");
}
将被执行为:
1 start
2 start
....
代替
1 start
1 finish
2 start
2 finish
当我在托管的 Blazor 服务器中执行相同操作时,它按预期工作:直到先前的方法返回,新的 OnNext 才会启动。这是设计使然吗?