Управление общим ресурсом с помощью функционального стиля программирования в JavaScript - PullRequest
1 голос
/ 12 ноября 2009

Как парадигма функционального программирования работает с общими ресурсами, которые необходимы для поддержания состояния?

У меня есть программа JavaScipt, которая позволяет нескольким абонентам получать доступ к общему ресурсу, в данном случае - к аутентифицированному сеансу HTTP.

С ресурсом связана информация о состоянии, в том числе такие как учетные данные, время кэширования, интервалы опроса, уже посещенные ссылки и другие вещи, необходимые для взаимодействия со службой данных RESTful. Важно то, что сеанс HTTP должен работать последовательно. Только один вызывающий абонент за раз должен иметь доступ к нему, и следующему вызывающему может быть запрещено использовать его, пока сервер не ответит первому вызывающему.

Конечно, я делаю это, катя свой собственный буфер (простой массив запросов JavaScript, выстроенных в пул). Тем не менее, программа особенно подвержена дефектам из-за всех изменяемых данных, поэтому я пытаюсь провести рефакторинг, используя более функциональный программный дизайн.

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

1 Ответ

1 голос
/ 12 ноября 2009

не выставляйте сеанс http, вместо этого пусть клиентский код запрашивает очередь, каждый с функцией, которая вызывается с ответом.

...