實現**最小的庫(受callbag啟發)
效能最好的庫(參考了most)
利用js的生成器實現的庫(突發奇想)
擴充套件nodejs的stream類實現的庫(受event-stream的啟發)
要實現乙個rx庫,關鍵在於實現資料的推送以及消費過程中的四個基本功能:
訂閱:即啟用rx資料流的每乙個環節,生產者此時可以開始傳送資料(某些生產者並不關心是否有人訂閱)
傳送/接受 資料:生產和消費的核心功能
完成/異常:由生產者發出的事件
取消訂閱: 由消費者觸發終止資料流,**所有資源
生產者
(*)-------------(o)--------------(o)---------------(x)----------------|
>||
|||start value value error done
消費者(*)-------------(o)--------------(o)---------------(x)----------------|
>||
|||subscribe onnext onnext onerror oncomplete
上述過程中,如果使用者呼叫了unsubscribe/disopse的方法,就可以中斷,從而不再觸發任何事件
鏈式程式設計
管道模式
本人利用js的proxy類,實現了乙個庫同時實現兩種書寫模式的解決方案,我會在後續的文章中解釋其中的原理。
(未完待續)
rxjs的另外四種實現方式(一)——**最小的庫
rxjs的另外四種實現方式(二)——**最小的庫(續)
rxjs的另外四種實現方式(三)——效能最高的庫
rxjs的另外四種實現方式(四)——效能最高的庫(續)
rxjs的另外四種實現方式(五)——使用生成器實現
rxjs的另外四種實現方式(六)——使用stream類實現
rxjs的另外四種實現方式(後記)—— 同時實現管道和鏈式程式設計
spring AOP四種實現方式
1.建立通知 定義乙個介面 public inte ce sleepable 然後寫乙個human類,他實現了這個介面 public human implements sleepable 2.編寫乙個sleephelper類,它裡面包含了睡覺的輔助工作,用aop術語來說它就應該是通知 public ...
js繼承的四種實現方式
一 原型鏈繼承 核心 將父類的例項作為子類的原型。宣告乙個動物的類 function animal name animal.prototype.公 父類新增原型方法 原型屬性,子類都能訪問到 animal.prototype.age 3 animal.prototype.sleep function...
單例的四種實現方式
單例的實現方式 1.餓漢式 顧名思義,已載入類就會建立單例。2.懶漢式 顧名思義,只有使用單例的時候,才給載入 3.靜態內部類 推薦 通過再單例實現類中,增加靜態內部類,在靜態內部類中實現單例,與餓漢式不同的時,因為是內部靜態類的靜態屬性,只有使用的時候才會建立單例。4.列舉 實現 將要實現的單例的...