我试图理解如何在ClojureScript中建模事件。在JavaScript中设计事件队列很容易。你只需要保留一个(可变)函数数组,并提供帮助函数来添加或从数组中删除回调。当您触发事件时,只需按顺序遍历列出的所有回调并依次调用它们。
这种范式远非函数式风格-例如,除非它们具有副作用,否则没有触发回调的意义。此外,它使用可变数组实现。尽管如此,似乎在ClojureScript中做任何有用的事情都需要能够进行事件驱动编程。我知道Google Closure已经实现了一个事件库,但我的问题是关于本地实现它。
由于所有基本的Clojure/ClojureScript数据类型都是不可变的,那么实现此机制的惯用方法是什么?更改ref?求助于来自宿主(Java resp JavaScript)的可变数据结构?
如果我理解正确,代理可能是Clojure中的正确工具,但我看到它们目前在ClojureScript中没有实现。