2012-04-01 89 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 /原子將被罰款。