我有2个可观察量A
和B
。
我想生成C
只有在A发出时才会发出,其中包含刚刚在A
中推送的值和{{{}}中的最新值1}}。
答案 0 :(得分:1)
在这里,我认为这样做
让我们说 A 是一个可观察到的char,而 B 是一个Observable of int。
每隔3秒打一次电话。 B每隔1秒呼叫一下。
从A获取当前最新的B.
static void Main(string[] args)
{
var chrObservable = CharEnumerable().ToObservable();
var timer1 = Observable.Interval(TimeSpan.FromSeconds(3));
var chrAtInterval = timer1.Zip(chrObservable, (ts,c) => c);
var numberObservable = NumEnumerable().ToObservable();
var timer2 = Observable.Interval(TimeSpan.FromSeconds(1));
var numberAtInterval = timer2.Zip(numberObservable, (ts,n) => n);
chrAtInterval.WithLatestFrom(numberAtInterval,(c, n) => new{c,n})
.Subscribe(pair => Console.WriteLine(pair.c + ":" + pair.n));
Console.WriteLine("Waiting...");
Console.ReadKey();
}
private static IEnumerable<int> NumEnumerable()
{
for (int i = 0; i < 10; i++)
{
yield return i;
}
}
private static IEnumerable<char> CharEnumerable()
{
for (int i = 0; i < 10; i++)
{
yield return (char)(i + 65);
}
}