core.async中pub和mult之间有什么区别?&一个样本用例?

ren*_*_gr 14 clojure core.async

我一直在使用core.async了一段时间,但避免了pubmult,因为我真的不能把握从他们的文档有用的用例.

具体是什么目的topic-fn以及如何在实践中使用它?

或许您可以将理论解释映射到下面的虚构方法.我认为这可以帮助我们了解它在实践中的运作方式(如果适用的话)?

虚构方法解释:

将有几种不同的观点来代表国家.为了让他们行动并响应状态变化,我希望有几个通道(在应用程序级别上),例如 - 专用于状态更改用户输入(如按键).

每个视图应该能够分(划线)到这个应用程序通道,所以他们可以独立地对变化做出反应 此外,每个视图都应该可以put状态通道上显示(但不是用户输入-chan).

Tim*_*dge 21

core.async中的频道是单播,单拍.也就是说,任何进入的消息都只给予一个接受者.这在广播情况下效果不佳,其中许多去块需要将每个消息的副本放入频道,然后您需要其他内容.这就是mult有用的东西.Mult也可能被称为"广播"

Pub就是多种多方法.topic-fn是应用于每个输入项的函数.函数的输出决定了消息的主题.然后,输入消息仅广播给正在收听该主题的订户.

更多信息可以在我上次Conj的演讲中注明,可在此处获取:https://github.com/halgari/clojure-conj-2013-core.async-examples/blob/master/src/clojure_conj_talk/core.clj #L398