Frage

Wie funktioniert das Funktionsprogrammierparadigma Deal mit gemeinsam genutzten Ressourcen, dass Bedarf Zustand zu halten?

Ich habe ein JavaScipt Programm, das den Zugriff von mehreren Anrufern auf eine gemeinsam genutzte Ressource ermöglicht, eine authentifizierte HTTP-Sitzung in diesem Fall.

Die Ressource hat Bündel von Zustandsinformationen im Zusammenhang mit ihm Dinge wie Anmeldeinformationen, Cache-Zeit, Abfrageintervalle, bereits besuchte Links einschließlich, und andere Sachen benötigt, um interact mit einem RESTful-Datenservice. Das Wichtigste ist, dass die HTTP-Sitzung seriell arbeiten muss. Nur ein Anrufer zu einem Zeitpunkt sollte der Zugang zu ihm erlaubt sein, und der nächste Anrufer nicht erlaubt werden, kann es bis der Server antwortet auf den ersten Anrufer zu verwenden.

Curently dies mache ich meine eigenen Puffer durch Walzen (einen einfachen JavaScript-Array von Anfragen in einem Pool ausgerichtet). Allerdings ist das Programm besonders anfällig für Defekte wegen aller wandelbaren Daten, so dass ich zu Refactoring mit einem funktionalen Programmierung Design mich versuche.

Von dem, was ich verstehe, der Weg zum Hantiererzustand in der funktionalen Programmierung ist eine Kopie einer neuen Datenstruktur an einen Anrufer zu übergeben, anstatt auf einem Objektzustandsvariablen ändern. Das ist großartig für den größten Teil, außer wenn ich neu die freigegebene Ressource (die HTTP-Sitzung) für jeden Aufruf an der API, dann wird der HTTP-Dienst (ein RESTful-Client) inkonsistent wird, Fehler auf dem Server zu erstellen.

War es hilfreich?

Lösung

Setzen Sie die HTTP-Sitzung, anstatt die Client-Code Warteschlange Anfragen lassen, die jeweils mit einer Funktion mit der Antwort aufgerufen werden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top