如果有办法跟踪重复序列中当前重复的完成情况,请告诉我吗?我的最终目标是跟踪当前的计数和完成的重复率,一旦我有了基础,我就能做到。谢谢你的帮助。
sequence.Repeat().Publish().RefCount()
我想在上面的结构中捕获“序列”的完成。
答案 0 :(得分:3)
使用Materialize
将T
的观察值转换为Notification<T>
的观察值。这允许您像普通序列值一样处理值,完成和错误。然后,您可以过滤掉完成。但是,我不太明白你打算用它们做什么......
var completions = sequence
.Materialize()
.Where(notification => notification.Kind == NotificationKind.OnCompleted)
.Repeat();
答案 1 :(得分:1)
丹尼尔的回答是有效的,虽然它会隐藏流错误,但我不确定这是你想要的。 或者,您可以在重复之前使用单元素流简单地连接流,并且该特殊元素将是您的完成标记:
var completions = sequence
.Concat(Observable.Return(42))
.Repeat().Publish().RefCount();
如果您需要此元素有一些上下文(您的问题没有说明),请将其与Observable.Defer
组合:
var completions = sequence
.Concat(Observable.Defer(() => Observable.Return(someExpression))
.Repeat().Publish().RefCount();