Как парадигма функционального программирования работает с общими ресурсами, которые необходимы для поддержания состояния?
У меня есть программа JavaScipt, которая позволяет нескольким абонентам получать доступ к общему ресурсу, в данном случае - к аутентифицированному сеансу HTTP.
С ресурсом связана информация о состоянии, в том числе такие как учетные данные, время кэширования, интервалы опроса, уже посещенные ссылки и другие вещи, необходимые для взаимодействия со службой данных RESTful. Важно то, что сеанс HTTP должен работать последовательно. Только один вызывающий абонент за раз должен иметь доступ к нему, и следующему вызывающему может быть запрещено использовать его, пока сервер не ответит первому вызывающему.
Конечно, я делаю это, катя свой собственный буфер (простой массив запросов JavaScript, выстроенных в пул). Тем не менее, программа особенно подвержена дефектам из-за всех изменяемых данных, поэтому я пытаюсь провести рефакторинг, используя более функциональный программный дизайн.
Из того, что я понимаю, способ обработки состояния в функциональном программировании заключается в передаче копии новой структуры данных вызывающей стороне, а не в изменении переменных состояния объекта. По большей части это здорово, за исключением того, что если я воссоздаю общий ресурс (сеанс HTTP) для каждого вызова API, служба HTTP (клиент RESTful) становится непоследовательной, что приводит к ошибкам на сервере.