Observable.Iterate() の使用を必要とする Reactive Extensions のいくつかの例をオンラインで見つけていますが、NuGet の Rx バージョン 1.0.10621.0 のパッケージには含まれていないようです。私がそれをすべて間違っていない限り?
名前が変更されたと思いますが、それに関する投稿は見つかりません。誰でも知っていますか?
Observable.Iterate() の使用を必要とする Reactive Extensions のいくつかの例をオンラインで見つけていますが、NuGet の Rx バージョン 1.0.10621.0 のパッケージには含まれていないようです。私がそれをすべて間違っていない限り?
名前が変更されたと思いますが、それに関する投稿は見つかりません。誰でも知っていますか?
Rxフォーラムから:
ウェスダイアー:
Observable.Iterateはどうですか?
Func、Task>をとるObservable.Createを使用します。これは、非同期待機を使用して駆動することを除いて、Iterateとまったく同じように機能します。
拡張メソッド 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);
}