2012-04-01 87 views
7

我想了解如何在ClojureScript中建模事件。使用JavaScript设计事件队列非常简单。您只需保留一个(可变的)函数数组,并提供帮助函数来添加或删除数组中的回调函数。触发事件时,只需遍历数组中列出的所有回调,并依次调用它们。在Clojure/ClojureScript中处理事件驱动的编程

这种范例远非功能风格 - 例如,除非触发副作用,否则触发回调没有意义。此外它使用可变数组来实现。在我看来,在ClojureScript中,仍然需要能够执行事件驱动的编程来做任何有用的事情。现在,我知道Google Closure已经实现了一个事件库,但我的问题是关于本地实现它。由于所有基本的Clojure/ClojureScript数据类型都是不可变的,实现这种机制的惯用方式是什么?改变参考?使用主机的可变数据结构(Java resp JavaScript)?

如果我理解正确的话,代理有可能Clojure中正确的工具,但我看到他们目前没有ClojureScript实现。

回答

5

Clojurescript One有一个库,one.dispatch这是一个很好的起点。 wiki有用法示例here

+0

而它采用原子相同的概念来存储所有的事件处理程序 – Ankur 2012-04-02 06:22:18

+0

找不到404 - 德你知道,如果它被移到别处? – 2017-06-28 13:13:29

1

,如果你想实现这样的解决方案,因为这是大多数的Clojure库等做时,他们有这样的情况,他们需要一个存储来存储/在运行时删除的东西更改REF /原子将被罚款。