【发布时间】:2014-11-19 19:24:38
【问题描述】:
我有一个非常简单的用例:在文本区域,我想停止 some 键码的事件传播并触发一些功能f,而对于其他键码,我只是触发一些功能g。
所以我定义了一个名为out 的通道和一个监听器,它将所有keypress 事件放到通道中:
(events/listen
(dom/getElement "input")
"keypress"
(fn [e] (put! out e)))
问题来了:我应该在哪里停止事件传播?要做到这一点之后,我从频道中提取了事件似乎在逻辑上迟到了,而且正如预期的那样,它不起作用。如上所示,在处理程序中停止事件传播似乎是惯用错误的。而且我真的不想在前置通道处理程序中加入任何逻辑:如果我直接在侦听器中完成所有工作,为什么还要使用 core.async?
那么它应该如何工作呢?
【问题讨论】:
-
查看 core.async 网络研讨会示例 - github.com/cognitect/async-webinar/blob/master/src/webinar/…。有
filter换能器的例子,你可以适应。
标签: events clojurescript core.async