関数型プログラミングのパラダイムは、状態を維持する必要がある共有リソースをどのように処理しますか?
複数の呼び出し元から共有リソース (この場合は認証済み HTTP セッション) へのアクセスを許可する JavaScipt プログラムがあります。
リソースには、資格情報、キャッシュ時間、ポーリング間隔、既にアクセス済みのリンク、RESTful データ サービスと対話するために必要なその他のものなど、リソースに関連付けられた一連の状態情報があります。重要なことは、HTTP セッションが連続して動作する必要があるということです。一度に 1 人の呼び出し元のみがアクセスを許可されるべきであり、サーバーが最初の呼び出し元に応答するまで、次の呼び出し元はそれを使用することを許可されない場合があります。
現在、私は独自のバッファ (プールに並んだリクエストの単純な JavaScript 配列) をローリングすることでこれを行っています。ただし、プログラムはすべての変更可能なデータのために特に欠陥が発生しやすいため、より機能的なプログラミング設計を使用してリファクタリングしようとしています。
私が理解していることから、関数型プログラミングで状態を処理する方法は、オブジェクトの状態変数を変更するのではなく、新しいデータ構造のコピーを呼び出し元に渡すことです。API への呼び出しごとに共有リソース (HTTP セッション) を再作成すると、HTTP サービス (RESTful クライアント) の一貫性が失われ、サーバーでエラーが発生します。