欢迎!有关如何使用本站的信息,请参阅关于页面。
我正在将一个JS库移植到Clojure(和潜在地ClojureScript),我在对局部状态进行推理方面有些棘手。想象一下这样的场景:通过WebSockets进行RPC,服务器的回复取决于它之前已经发送给您的信息。那么,您可能需要保留服务器回复的本地缓存。
在面向对象的世界中,通常会预期将套接字和缓存封装在一起,并向库用户提供一个接口,该接口发送RPC并透明地处理缓存填充和从其中检索结果。您会如何在Clojure[-Script]中实现同样的方法?我是不是应该只返回一个映射,期待我的函数将作为第一个参数接受它,同时返回更新的状态和RPC结果?
是的,使状态显式,作为参数传递。不要使用全局状态。也不要使用动态变量。也不要假设特定的状态框架,如Integrant或Component。
这样,消费者将拥有最大的灵活性和简单性。
你在JavaScript中处理它的方式没有问题。这与任何有状态的转换器工作方式类似。