我正在尝试使用core.async的混音。似乎将混合中的输入通道静音是实现背压的可能方式之一。我使用下面的代码:
(def output-chan (chan))
(def input-chan (chan))
(def mixer (admix (mix output-chan) input-chan))
(toggle mixer {input-chan {:mute true}})
评估REPL中的最后一行
CompilerException java.lang.IllegalArgumentException: No implementation of method: :toggle* of protocol: #'clojure.core.async/Mix found for class: java.lang.Boolean
。
上面的示例代码有什么问题?
谢谢!
答案 0 :(得分:1)
(def mixer(admix(mix output-chan)input-chan))
您将admix
的返回值分配给mixer
,这是一个布尔值,而不是预期的混音器。尝试:
(def output-chan (chan))
(def input-chan (chan))
(def mixer (mix output-chan))
(admix mixer input-chan)
(toggle mixer {input-chan {:mute true}})