RxJS的另外四種實現方式(序)

2021-08-28 06:13:20 字數 1088 閱讀 9218

實現**最小的庫(受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.列舉 實現 將要實現的單例的...