gpt4 book ai didi

c# - 如何将 IObservable> 转换为 IObservable

转载 作者:行者123 更新时间:2023-12-02 19:24:55 26 4
gpt4 key购买 nike

假设我有一个返回 IObservable<T> 的函数并且这个函数需要初始状态。

let myObservable (initialState: T) :IObservable<T> = (...)

但我只能从另一个可观察的对象获取初始状态,该可观察对象仅发出一次

let initializeObservable: IObservable<S> = (...)

如何将这两者结合起来得到 IObservable<T>

let resultObservable = initializeObservable |>
Observable.map (fun initialState -> myObservable initialState)

当前 resultObservable 为 IObservable<IObservable<T>>但我希望它是 IObservable<T>并在初始状态就绪后从 myObservable 发出值。

最佳答案

一般来说,如果您采用升高型 A<T> ,将其降低至T ,从 T -> U 投影它并抬起它以获得 A<U> ,该操作称为 bind .

Observable.bind (fun init -> myObservable init) initializeObservable

或者简化一下:

initializeObservable |> Observable.bind myObservable

至于你的方法,你已经差不多了。

initializeObservable 
|> Observable.map (fun initialState -> myObservable initialState)
|> Observable.mergeInner

即使你的 initializeObservable发射 n 次,你可以将所有的 observable 合并在一起,即使它只发射一次也同样有效。

关于c# - 如何将 IObservable<IObservable<T>> 转换为 IObservable<T>?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62518415/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com