2009-11-12 41 views
1

函數式編程範例如何處理需要維護狀態的共享資源?使用JavaScript中的函數式編程風格管理共享資源

我有一個JavaScipt程序,允許從多個調用者訪問共享資源,在這種情況下是經過身份驗證的HTTP會話。

該資源包含一系列與其關聯的狀態信息,包括證書,緩存時間,輪詢間隔,已訪問的鏈接以及與RESTful數據服務交互所需的其他內容。重要的是HTTP會話需要串行操作。一次只允許一個呼叫者訪問它,並且在服務器響應第一個呼叫者之前,下一個呼叫者可能不被允許使用它。

確實,我通過滾動我自己的緩衝區(一個簡單的JavaScript數組請求排隊在池中)來做到這一點。但是,由於所有可變數據,程序特別容易出現缺陷,所以我試圖使用更多功能的編程設計進行重構。

據我所知,函數式編程中處理狀態的方法是將新數據結構的副本傳遞給調用者,而不是修改對象上的狀態變量。除非重新創建共享資源(HTTP會話),否則HTTP服務(RESTful客戶端)會變得不一致,從而在服務器上創建錯誤,這在很大程度上是很好的。

回答

1

不公開http會話,而是讓客戶端代碼對隊列請求進行排隊,每個請求都帶有一個函數用響應調用。

+0

是的,我目前正在將請求排入緩衝區/池中,但我認爲我需要更好地封裝http會話,以便它不暴露給api,然後我可以在膠囊內部執行所有函數式編程。 –