使用JavaScript中的函数编程样式管理共享资源

时间:2009-11-12 13:08:18

标签: javascript functional-programming resources shared

函数式编程范例如何处理需要维护状态的共享资源?

我有一个JavaScipt程序,允许多个调用者访问共享资源,在这种情况下是经过身份验证的HTTP会话。

资源包含大量与之关联的状态信息,包括凭据,缓存时间,轮询间隔,已访问过的链接以及与RESTful数据服务交互所需的其他内容。重要的是HTTP会话需要串行操作。一次只允许一个呼叫者访问它,并且在服务器响应第一个呼叫者之前,可能不允许下一个呼叫者使用它。

我通过滚动自己的缓冲区(在池中排列的简单JavaScript请求数组)来实现这一点。但是,由于所有可变数据,程序特别容易出现缺陷,所以我试图使用更多功能的编程设计进行重构。

据我所知,函数式编程中处理状态的方法是将新数据结构的副本传递给调用者,而不是修改对象上的状态变量。这在很大程度上是很好的,除非我为每次API调用重新创建共享资源(HTTP会话),然后HTTP服务(RESTful客户端)变得不一致,在服务器上创建错误。

1 个答案:

答案 0 :(得分:1)

不公开http会话,而是让客户端代码队列请求,每个请求都有一个函数可以通过响应调用。