我正在试图弄清楚如何在FSharp.Control.Reactive库中使用Observable.create函数,但似乎缺少了一些东西。
函数签名定义为:
((IObserver<'a> -> unit -> unit) -> IObservable<'a>)
我尝试了几种创建observable的方法,例如:
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,因此不会调用subscribe中的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。
我已经看了一眼,但是找不到任何关于如何调用它的例子,所以任何帮助都会受到赞赏。
由于
答案 0 :(得分:1)
我向开发者提出了一个问题。他们现在已经删除了Observable.create函数,所以现在使用System.Reactive.Linq.Observable.Create()方法创建observable。
这使得这个问题现在无效。
答案 1 :(得分:0)
我曾asked that使用c#。
使用F#Control.Reactive将是:
Observable.create(
fun observer ->
Action (fun () ->
foo.OnBar(
fun (args : Args) ->
observer.OnNext(args)
observer.OnCompleted())))