我在网上找到了一些需要使用 Observable.Iterate() 的响应式扩展示例,但是来自 NuGet 的包,Rx 版本 1.0.10621.0 似乎不包含它。除非我做错了?
我认为它已重命名,但我找不到任何有关此的帖子。有人知道吗?
我在网上找到了一些需要使用 Observable.Iterate() 的响应式扩展示例,但是来自 NuGet 的包,Rx 版本 1.0.10621.0 似乎不包含它。除非我做错了?
我认为它已重命名,但我找不到任何有关此的帖子。有人知道吗?
来自Rx 论坛:
韦斯·戴尔:
Observable.Iterate 呢?
使用带有 Func,Task> 的 Observable.Create,它的工作方式与 Iterate 完全相同,只是它使用 async await 来驱动它。
扩展方法 Iterate 可能如下所示:
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);
}