欢迎!请查看关于页面以了解更多关于它是如何工作的信息。
我将一个 JS 库移植到 Clojure(以及潜在的 Clojurescript),我在对本地状态的推理方面感到困难。想象一下,你通过 WebSocket 进行 RPC,服务器的响应取决于它已经发送给你的内容。然后你需要保留服务器回应的本地缓存。
在面向对象的领域中,人们预期你将套接字和缓存封装起来,并提供一个库用户接口,该接口发送 RPC 并透明地处理缓存的填充和从中提取结果。在 Clojure[-script] 中,如何以惯用法进行相同操作?我只是返回一个地图,并期望我的函数将其作为第一个参数接受,返回更新后的状态以及 RPC 结果吗?
是的,让状态明确,作为参数传递。不要使用全局状态。也不要使用动态变量。不要假设特定的状态框架,比如 Integrant 或 Component。
这样消费者将拥有最大限度的灵活性和简单性。
JavaScript中的处理方式并没有问题。它类似于任何有状态转换器的工作方式。