命令可调用的函数调用两次
The function callable by command get calling twice
其中一个较小的项目需要功能更改...所以我决定也更新 Gjallarhorn.Bindable.Wpf 库的版本。
事实上,我只是在需要的地方添加了一个额外的参数。
但是现在应用程序无法正常工作,因为命令调用的函数被调用了两次。
最小的例子如下:
type Message = |Number of int
let rand = Random()
let mbindings _ source _ =
let getNumber() =
let number = rand.Next()
printfn "RAND = %A" number //print a number twice
number |> Some
[
Bind.Explicit.createCommand "NewNumber" source
|> Observable.map (fun _ -> getNumber())
|> Observable.toMessage Number
]
let mcomponent : IComponent<int, obj, Message> =
Component.fromExplicit mbindings
let app nav =
let model = 42
let update message _ =
match message with
|Number number -> number
Framework.application model update mcomponent nav
...
let nav = Navigation.singleView Application MainWin
let app = app nav.Navigate
Framework.RunApplication (nav, app)
这是图书馆的错误还是我遗漏了什么?
这是 a bug. It has been corrected in Gjallarhorn.Bindable Beta 6。
问题是框架订阅了绑定中的 observable 两次。这通常很好,但在您的情况下,可观察对象有一个副作用,即 运行 多次。我修改了框架中的处理方式以防止多次订阅,因此如果您升级到最新版本,它不应再触发两次。
其中一个较小的项目需要功能更改...所以我决定也更新 Gjallarhorn.Bindable.Wpf 库的版本。
事实上,我只是在需要的地方添加了一个额外的参数。
但是现在应用程序无法正常工作,因为命令调用的函数被调用了两次。
最小的例子如下:
type Message = |Number of int
let rand = Random()
let mbindings _ source _ =
let getNumber() =
let number = rand.Next()
printfn "RAND = %A" number //print a number twice
number |> Some
[
Bind.Explicit.createCommand "NewNumber" source
|> Observable.map (fun _ -> getNumber())
|> Observable.toMessage Number
]
let mcomponent : IComponent<int, obj, Message> =
Component.fromExplicit mbindings
let app nav =
let model = 42
let update message _ =
match message with
|Number number -> number
Framework.application model update mcomponent nav
...
let nav = Navigation.singleView Application MainWin
let app = app nav.Navigate
Framework.RunApplication (nav, app)
这是图书馆的错误还是我遗漏了什么?
这是 a bug. It has been corrected in Gjallarhorn.Bindable Beta 6。
问题是框架订阅了绑定中的 observable 两次。这通常很好,但在您的情况下,可观察对象有一个副作用,即 运行 多次。我修改了框架中的处理方式以防止多次订阅,因此如果您升级到最新版本,它不应再触发两次。