我在网上找到了一些需要使用Observable.Iterate()的响应式扩展的例子,但是NuGet, Rx版本1.0.10621.0的包似乎不包括它。除非我做错了?
我假设它被重命名了,但我找不到任何关于这方面的帖子。有人知道吗?
From Rx Forum:
韦斯代尔:
Observable.Iterate呢?
使用Observable。创建一个函数,任务>它的工作原理与迭代完全相同,除了它使用异步等待驱动它
一个扩展方法迭代可以像这样:
public static IObservable<T> Iterate<T, TIter>([NotNull] this IObservable<TIter> source, [NotNull] T iterationStart, [NotNull] Func<TIter, T, T> iterator)
{
return Observable.Create<T>(observer =>
{
T previousElement = iterationStart;
return source.Subscribe(
value =>
{
T currentElement = iterator(value, previousElement);
observer.OnNext(currentElement);
previousElement = currentElement;
},
observer.OnError,
observer.OnCompleted
);
}).StartWith(iterationStart);
}