函数式编程范式如何处理需要维护状态的共享资源?
我有一个 JavaScipt 程序,它允许多个调用者访问共享资源,在这种情况下是经过身份验证的 HTTP 会话。
该资源具有与其相关联的大量状态信息,包括凭据、缓存时间、轮询间隔、已访问的链接以及与 RESTful 数据服务交互所需的其他内容。重要的是 HTTP 会话需要串行操作。一次只能允许一个调用者访问它,并且在服务器响应第一个调用者之前可能不允许下一个调用者使用它。
目前,我通过滚动我自己的缓冲区(在池中排列的一个简单的 JavaScript 请求数组)来做到这一点。但是,由于所有可变数据,该程序特别容易出现缺陷,因此我正在尝试使用更具功能性的编程设计进行重构。
据我了解,在函数式编程中处理状态的方法是将新数据结构的副本传递给调用者,而不是修改对象上的状态变量。这在大多数情况下都很好,除非我为每次调用 API 重新创建共享资源(HTTP 会话),然后 HTTP 服务(一个 RESTful 客户端)变得不一致,从而在服务器上创建错误。