f# - 你如何在 FSharp.Control.Reactive 库中使用 Observable.create?

标签 f# system.reactive

我试图找出如何使用 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() 方法创建可观察对象。

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

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

关于f# - 你如何在 FSharp.Control.Reactive 库中使用 Observable.create?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29436180/

相关文章:

f# - 这段代码中使用括号是什么意思

f# - C# async/await 方法到 F#?

f# - 使用标准输入初始化函数

swift - Observable 更改时不返回值

f# - 获取元组选项类型变量的值?

f# - 为什么 "-1"减1不起作用?

c# - 统计一个主题的所有订阅

system.reactive - 响应式(Reactive)扩展文档

c# - 是否可以用新的 Reactive 框架替换 C# 中的传统事件处理?

.net - 如何组织与串行端口设备通信的代码?