【问题标题】:Managing a shared resource with functional programming style in JavaScript在 JavaScript 中使用函数式编程风格管理共享资源
【发布时间】:2010-12-15 21:02:30
【问题描述】:

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

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

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

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

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

【问题讨论】:

    标签: javascript functional-programming resources shared


    【解决方案1】:

    不要暴露 http 会话,而是让客户端代码对请求进行排队,每个请求都有一个函数来调用响应。

    【讨论】:

    • 是的,我目前正在缓冲区/池中排队请求,但我认为我需要更好地封装http会话,使其不暴露给api,然后我可以做所有我的胶囊内的函数式编程。
    猜你喜欢
    • 2016-09-03
    • 2021-05-01
    • 1970-01-01
    • 2017-01-03
    • 2023-02-07
    • 2022-11-30
    • 2021-02-10
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多