我试图找出如何使用 FSharp.Control.Reactive 库中的 Observable.create 函数,但似乎遗漏了一些东西。
函数签名定义为:
((IObserver<'a> -> unit -> unit) -> IObservable<'a>)
我尝试了几种不同的方法来创建可观察对象,例如:
Observable.create (fun obs -> fun _ -> obs.OnNext("xxx") )
|> Observable.subscribe (fun x -> printfn "%A" x)
和
Observable.create (fun obs -> obs.OnNext("xxx"); fun _ -> () )
|> Observable.subscribe (fun x -> printfn "%A" x)
它会编译但不会执行 OnNext,因此不会调用订阅中的 printfn 语句。
我可以直接从 System.Reactive.Linq 命名空间调用 Observable.Create 方法,如下所示:
Observable.Create(fun (obs : IObserver<string>) -> obs.OnNext("www"); Action( fun _ -> () ) )
|> Observable.subscribe (fun x -> printfn "%A" x)
这会将“www”打印到交互式。 同样,我可以按如下方式使用 Observable.createWithDisposable:
Observable.createWithDisposable(fun obs -> obs.OnNext("yyy") ; Disposable.Empty )
|> Observable.subscribe (fun x -> printfn "%A" x)
并将其发送到交互式打印“yyy”
所以我遇到麻烦的只是 FSharp.Control.Reactive.Observable.create。
我看过了,但找不到任何关于如何调用它的示例,因此我们将不胜感激。
谢谢
最佳答案
我向开发者提出了一个问题。他们现在删除了 Observable.create 函数,因此您现在可以使用 System.Reactive.Linq.Observable.Create() 方法创建可观察对象。
这使得这个问题现在无效。
关于f# - 你如何在 FSharp.Control.Reactive 库中使用 Observable.create?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29436180/