结合可观察物

时间:2020-06-13 02:26:56

标签: f# observable reactive-programming

让我说

A: IObservable<int> 
B: IObservable<int> 

我如何将两者结合成

C: IObservable<int> 

哪个发射值是A和B的最后观测值的乘积?

例如

A = [ 2   3       1 ]
B = [   2   5  6    ]

然后

C = [   4 6 15 18 6 ] 

1 个答案:

答案 0 :(得分:1)

我不太擅长f#(更像是新手),但这似乎行得通:

let a = new Subject<int>()
let b = new Subject<int>()

let c = Observable.CombineLatest(a, b, Func<_,_,_>(fun x y -> x * y))

c.Subscribe(fun x -> printfn "%i" x) |> ignore

a.OnNext(2)
b.OnNext(2)
a.OnNext(3)
b.OnNext(5)
b.OnNext(6)
a.OnNext(1)

我得到:

4
6
15
18
6