如何在FSharp.Control.Rreactive库中使用Observable.create



我正试图弄清楚如何在FSharp.Control.Rreactive库中使用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.ObsObservable.create()方法创建可观察对象。

这使得这个问题现在无效。

https://github.com/fsprojects/FSharp.Control.Reactive/commit/c8f6d245e75d55b2bd6077c53b311119422c97a1

我曾经用c#问过这个问题。

使用F#控制。反应式为:

        Observable.create(
            fun observer ->                        
                Action (fun () -> 
                    foo.OnBar(
                       fun (args : Args) -> 
                         observer.OnNext(args)            
                         observer.OnCompleted())))

相关内容

  • 没有找到相关文章

最新更新