您好,登錄后才能下訂單哦!
- 本文適合人群:了解Rx編程人士、
Javascript
發燒友- 本文涉及概念:響應型編程、NodeJs、函數式編程
本人自從讀過一篇來自Info的《函數式反應型編程(FRP) —— 實時互動應用開發的新思路》后便迷戀上了Rx,甚至以當時的Rxjs庫移植了一套適用于Flash的AS3.0的Rx庫ReactiveFl,也在實際開發中不斷實踐體會其中的樂趣。最近在知乎上無意中看到有人提到了一個名為callbag的項目,引發了我很大的興趣,甚至×××觀看了作者的視頻Callback Heaven - Andre Staltz看完視頻,我久久不能平靜,這是多么的奇思妙想,然而當我運行了作者代碼庫里面的性能測試的時候,另一個不為人所知的庫出現了,叫做Most。這個庫性能了得,遠遠超過同類的庫,然后我就想是否可以結合兩者的優勢,創造出性能高超,但設計巧妙又通俗易懂的Rx庫呢?于是我做了如下的嘗試:
受到以上的啟發,我又實現了Golang的Rx庫
源碼請關注我的github,https://github.com/langhuihui
要實現一個Rx庫,關鍵在于實現數據的推送以及消費過程中的四個基本功能:
生產者
(*)-------------(o)--------------(o)---------------(x)----------------|>
| | | | |
Start value value error Done
消費者
(*)-------------(o)--------------(o)---------------(x)----------------|>
| | | | |
Subscribe onNext onNext onError onComplete
上述過程中,如果用戶調用了unSubscribe/Disopse的方法,就可以中斷,從而不再觸發任何事件
本人利用js的Proxy類,實現了一個庫同時實現兩種書寫模式的解決方案,我會在后續的文章中解釋其中的原理。
(未完待續)
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。