私はRx.Netを学んでいます。私は、多数の間隔で実行されるスケジューラを構築しています。アイデアは、私は間隔のコレクションとコマンドのコレクションを持っている、私はそれらを一緒にタプルし、結合された結果を購読している。各コマンドは、それぞれの間隔に関連付けられ、関連付けられて定義された間隔(ケイデンス)で実行されます。ObservableとStateをペアにする方法は?
私は間隔を一緒にマージすることができますが、私はこのコマンド(状態)をサブスクリプションに渡す方法を理解しようとしています。 私はScan
の機能を見ましたが、これは集約して見え、結合/タプルしていません。ここに私のコードです:
var intervals = new[]
{
TimeSpan.FromSeconds(30),
TimeSpan.FromSeconds(60),
TimeSpan.FromSeconds(90)
};
var commands = new Action[]
{
() => Console.WriteLine("30 Seconds!"),
() => Console.WriteLine("60 Seconds!"),
() => Console.WriteLine("90 Seconds!")
};
intervals.Zip(commands, ValueTuple.Create)
.Select(x => Observable.Interval(x.Item1)) // <-- Need magic here. :)
.Merge()
.Subscribe(x =>
{
x.Item2(); // Broken, x is a long.
});
私はここで達成しようとしていることを行う方法はありますか? Scan
のようなものですが、アキュムレータではなく、タプラ(単語の場合)です。
Woohoo!それはまさに私が探していたものでした!スーパーシンプル(と少し明らかなハハ)を起動します。ありがとう@ Shlomo! –