应用模型何时可以更改?

z5h*_*z5h 3 elm

我想知道应用程序模型何时可能会发生变化.

具体来说,这样的代码是否保证是正确的?

onClick <| UpdateModelVersionMessage (model.version + 1)

也就是说,在呈现UI组件,注册和调度事件之间,是否有其他更新模型以使该UpdateModelVersionMessage值过期?Javascript的并发模型让我相信我很安全.但是Elm正在做或者榆树可能会做一些像批量/重新排序消息的事情吗?

z5h*_*z5h 5

我被告知,截至0.18:

视图通过requestanimationframe异步呈现,所以不,它不安全.

但是也:

在0.19中,html事件将触发同步重新渲染,因此这不会成为问题

最后:

Requestanimationframe以60fps运行,因此使用过时模型发送事件的窗口非常小,
即最多16ms,假设您的视图可以在单个帧内呈现(如果不能,则这是一个不同的问题)
所以在在这种情况下,我建议做一些可能有效的最简单的事情,知道它出错的可能性非常小,并且知道在0.19中,视图可以同步重新渲染,从而防止这是一个可能的问题.

感谢Ilias(https://github.com/zwilias)的答案.